diff options
90 files changed, 3876 insertions, 1043 deletions
diff --git a/sys/contrib/dev/acpica/CHANGES.txt b/sys/contrib/dev/acpica/CHANGES.txt new file mode 100644 index 0000000..66313c2 --- /dev/null +++ b/sys/contrib/dev/acpica/CHANGES.txt @@ -0,0 +1,2828 @@ +---------------------------------------- +15 August 2002. Summary of changes for this release. + +1) ACPI CA Core Subsystem Version 20020815: + +Fixed a reported problem where a Store to a method argument +that contains a reference did not perform the indirect store +correctly. This problem was created during the conversion +to the new reference object model – the indirect store to a +method argument code was not updated to reflect the new +model. + +Reworked the ACPI mode change code to better conform to ACPI +2.0, handle corner cases, and improve code legibility (Kochi +Takayoshi) + +Fixed a problem with the pathname parsing for the carat (^) +prefix. The heavy use of the carat operator by the new +namepath optimization in the iASL compiler uncovered a +problem with the AML interpreter handling of this prefix. +In the case where one or more carats precede a single +nameseg, the nameseg was treated as standalone and the +search rule (to root) was inadvertently applied. This could +cause both the iASL compiler and the interpreter to find the +wrong object or to miss the error that should occur if the +object does not exist at that exact pathname. + +Found and fixed the problem where the HP Pavilion DSDT would +not load. This was a relatively minor tweak to the table +loading code (a problem caused by the unexpected encounter +with a method invocation not within a control method), but +it does not solve the overall issue of the execution of AML +code at the table level. This investigation is still +ongoing. + +Code and Data Size: Current core subsystem library sizes are +shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release + Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K +Total + Debug Version: 149.4K Code, 61.6K Data, 211.0K +Total + Current Release: + Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K +Total + Debug Version: 150.0K Code, 61.7K Data, 211.7K +Total + + +2) Linux + +Remove redundant slab.h include (Brad Hards) + +Fix several bugs in thermal.c (Herbert Nachtnebel) + +Make CONFIG_ACPI_BOOT work properly (Pavel Machek) + +Change acpi_system_suspend to use updated irq functions +(Pavel Machek) + +Export acpi_get_firmware_table (Matthew Wilcox) + +Use proper root proc entry for ACPI (Kochi Takayoshi) + +Fix early-boot table parsing (Bjorn Helgaas) + + +3) iASL Compiler/Disassembler + +Reworked the compiler options to make them more consistent +and to use two-letter options where appropriate. We were +running out of sensible letters. This may break some +makefiles, so check the current options list by invoking the +compiler with no parameters. + +Completed the design and implementation of the ASL namepath +optimization option for the compiler. This option optimizes +all references to named objects to the shortest possible +path. The first attempt tries to utilize a single nameseg +(4 characters) and the “search-to-root” algorithm used by +the interpreter. If that cannot be used (because either the +name is not in the search path or there is a conflict with +another object with the same name), the pathname is +optimized using the carat prefix (usually a shorter string +than specifying the entire path from the root.) + +Implemented support to obtain the DSDT from the Windows +registry (when the disassembly option is specified with no +input file). Added this code as the implementation for +AcpiOsTableOverride in the Windows OSL. Migrated the 16-bit +code (used in the AcpiDump utility) to scan memory for the +DSDT to the AcpiOsTableOverride function in the DOS OSL to +make the disassembler truly OS independent. + +Implemented a new option to disassemble and compile in one +step. When used without an input filename, this option will +grab the DSDT from the local machine, disassemble it, and +compile it in one step. + +Added a warning message for invalid escapes (a backslash +followed by any character other than the allowable escapes). +This catches the quoted string error “\_SB_” (which should +be “\\_SB_” ). Also, there are numerous instances in the +ACPI specification where this error occurs. + +Added a compiler option to disable all optimizations. This +is basically the “compatibility mode” because by using this +option, the AML code will come out exactly the same as other +ASL compilers. + +Added error messages for incorrectly ordered dependent +resource functions. This includes: missing EndDependentFn +macro at end of dependent resource list, nested dependent +function macros (both start and end), and missing +StartDependentFn macro. These are common errors that should +be caught at compile time. + +Implemented _OSI support for the disassembler and compiler. +_OSI must be included in the namespace for proper +disassembly (because the disassembler must know the number +of arguments.) + +Added an “optimization” message type that is optional (off +by default). This message is used for all optimizations – +including constant folding, integer optimization, and +namepath optimization. + +---------------------------------------- +25 July 2002. Summary of changes for this release. + + +1) ACPI CA Core Subsystem Version 20020725: + +The AML Disassembler has been enhanced to produce compilable +ASL code and has been integrated into the iASL compiler (see +below) as well as the single-step disassembly for the AML +debugger and the disassembler for the AcpiDump utility. All +ACPI 2.0A opcodes, resource templates and macros are fully +supported. The disassembler has been tested on over 30 +different AML files, producing identical AML when the +resulting disassembled ASL file is recompiled with the same +ASL compiler. + +Modified the Resource Manager to allow zero interrupts and +zero dma channels during the GetCurrentResources call. This +was causing problems on some platforms. + +Added the AcpiOsRedirectOutput interface to the OSL to +simplify output redirection for the AcpiOsPrintf and +AcpiOsVprintf interfaces. + +Code and Data Size: Current core subsystem library sizes are +shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release + Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K +Total + Debug Version: 142.9K Code, 58.7K Data, 201.6K +Total + Current Release: + Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K +Total + Debug Version: 149.4K Code, 61.6K Data, 211.0K +Total + + +2) Linux + +Fixed a panic in the EC driver (Dominik Brodowski) + +Implemented checksum of the R/XSDT itself during Linux table +scan (Richard Schaal) + + +3) iASL compiler + +The AML disassembler is integrated into the compiler. The "- +d" option invokes the disassembler to completely +disassemble an input AML file, producing as output a text +ASL file with the extension ".dsl" (to avoid name collisions +with existing .asl source files.) A future enhancement will +allow the disassembler to obtain the BIOS DSDT from the +registry under Windows. + +Fixed a problem with the VendorShort and VendorLong resource +descriptors where an invalid AML sequence was created. + +Implemented a fix for BufferData term in the ASL parser. It +was inadvertently defined twice, allowing invalid syntax to +pass and causing reduction conflicts. + +Fixed a problem where the Ones opcode could get converted to +a value of zero if "Ones" was used where a byte, word or +dword value was expected. The 64-bit value is now truncated +to the correct size with the correct value. + + +---------------------------------------- +02 July 2002. Summary of changes for this release. + + +1) ACPI CA Core Subsystem Version 20020702: + +The Table Manager code has been restructured to add several +new features. Tables that are not required by the core +subsystem (other than the FADT, DSDT, FACS, PSDTs, etc.) are +no longer validated in any way and are returned from +AcpiGetFirmwareTable if requested. The AcpiOsTableOverride +interface is now called for each table that is loaded by the +subsystem in order to allow the host to override any table +it chooses. Previously, only the DSDT could be overridden. +Added one new files, tbrsdt.c and tbgetall.c. + +Fixed a problem with the conversion of internal package +objects to external objects (when a package is returned from +a control method.) The return buffer length was set to zero +instead of the proper length of the package object. + +Fixed a reported problem with the use of the RefOf and +DeRefOf operators when passing reference arguments to +control methods. A new type of Reference object is used +internally for references produced by the RefOf operator. + +Added additional error messages in the Resource Manager to +explain AE_BAD_DATA errors when they occur during resource +parsing. + +Split the AcpiEnableSubsystem into two primitives to enable +a finer granularity initialization sequence. These two +calls should be called in this order: AcpiEnableSubsystem +(flags), AcpiInitializeObjects (flags). The flags parameter +remains the same. + + +2) Linux + +Updated the ACPI utilities module to understand the new +style of fully resolved package objects that are now +returned from the core subsystem. This eliminates errors of +the form: + + ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] + acpi_utils-0430 [145] acpi_evaluate_reference: + Invalid element in package (not a device reference) + +The method evaluation utility uses the new buffer allocation +scheme instead of calling AcpiEvaluate Object twice. + +Added support for ECDT. This allows the use of the Embedded +Controller before the namespace has been fully initialized, +which is necessary for ACPI 2.0 support, and for some +laptops to initialize properly. (Laptops using ECDT are +still rare, so only limited testing was performed of the +added functionality.) + +Fixed memory leaks in the EC driver. + +Eliminated a brittle code structure in acpi_bus_init(). + +Eliminated the acpi_evaluate() helper function in utils.c. +It is no longer needed since acpi_evaluate_object can +optionally allocate memory for the return object. + +Implemented fix for keyboard hang when getting battery +readings on some systems (Stephen White) + +PCI IRQ routing update (Dominik Brodowski) + +Fix an ifdef to allow compilation on UP with LAPIC but no +IOAPIC support + +---------------------------------------- +11 June 2002. Summary of changes for this release. + + +1) ACPI CA Core Subsystem Version 20020611: + +Fixed a reported problem where constants such as Zero and +One appearing within _PRT packages were not handled +correctly within the resource manager code. Originally +reported against the ASL compiler because the code generator +now optimizes integers to their minimal AML representation +(i.e. AML constants if possible.) The _PRT code now handles +all AML constant opcodes correctly (Zero, One, Ones, +Revision). + +Fixed a problem with the Concatenate operator in the AML +interpreter where a buffer result object was incorrectly +marked as not fully evaluated, causing a run-time error of +AE_AML_INTERNAL. + +All package sub-objects are now fully resolved before they +are returned from the external ACPI interfaces. This means +that name strings are resolved to object handles, and +constant operators (Zero, One, Ones, Revision) are resolved +to Integers. + +Implemented immediate resolution of the AML Constant opcodes +(Zero, One, Ones, Revision) to Integer objects upon +detection within the AML stream. This has simplified and +reduced the generated code size of the subsystem by +eliminating about 10 switch statements for these constants +(which previously were contained in Reference objects.) The +complicating issues are that the Zero opcode is used as a +"placeholder" for unspecified optional target operands and +stores to constants are defined to be no-ops. + +Code and Data Size: Current core subsystem library sizes are +shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release + Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K +Total + Debug Version: 143.8K Code, 58.8K Data, 202.6K +Total + Current Release: + Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K +Total + Debug Version: 142.9K Code, 58.7K Data, 201.6K +Total + + +2) Linux + +Added preliminary support for obtaining _TRA data for PCI +root bridges (Bjorn Helgaas). + + +3) iASL Compiler Version X2046: + +Fixed a problem where the "_DDN" reserved name was defined +to be a control method with one argument. There are no +arguments, and _DDN does not have to be a control method. + +Fixed a problem with the Linux version of the compiler where +the source lines printed with error messages were the wrong +lines. This turned out to be the "LF versus CR/LF" +difference between Windows and Unix. This appears to be the +longstanding issue concerning listing output and error +messages. + +Fixed a problem with the Linux version of compiler where +opcode names within error messages were wrong. This was +caused by a slight difference in the output of the Flex tool +on Linux versus Windows. + +Fixed a problem with the Linux compiler where the hex output +files contained some garbage data caused by an internal +buffer overrun. + + +---------------------------------------- +17 May 2002. Summary of changes for this release. + + +1) ACPI CA Core Subsystem Version 20020517: + +Implemented a workaround to an BIOS bug discovered on the HP +OmniBook where the FADT revision number and the table size +are inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table +size). The new behavior is to fallback to using only the +ACPI 1.0 fields of the FADT if the table is too small to be +a ACPI 2.0 table as claimed by the revision number. +Although this is a BIOS bug, this is a case where the +workaround is simple enough and with no side effects, so it +seemed prudent to add it. A warning message is issued, +however. + +Implemented minimum size checks for the fixed-length ACPI +tables -- the FADT and FACS, as well as consistency checks +between the revision number and the table size. + +Fixed a reported problem in the table override support where +the new table pointer was incorrectly treated as a physical +address instead of a logical address. + +Eliminated the use of the AE_AML_ERROR exception and +replaced it with more descriptive codes. + +Fixed a problem where an exception would occur if an ASL +Field was defined with no named Field Units underneath it +(used by some index fields). + +Code and Data Size: Current core subsystem library sizes are +shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release + Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K +Total + Debug Version: 142.9K Code, 58.4K Data, 201.3K +Total + Current Release: + Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K +Total + Debug Version: 143.8K Code, 58.8K Data, 202.6K +Total + + + +2) Linux + +Much work done on ACPI init (MADT and PCI IRQ routing +support). (Paul D. and Dominik Brodowski) + +Fix PCI IRQ-related panic on boot (Sam Revitch) + +Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) + +Fix "MHz" typo (Dominik Brodowski) + +Fix RTC year 2000 issue (Dominik Brodowski) + +Preclude multiple button proc entries (Eric Brunet) + +Moved arch-specific code out of include/platform/aclinux.h + +3) iASL Compiler Version X2044: + +Implemented error checking for the string used in the EISAID +macro (Usually used in the definition of the _HID object.) +The code now strictly enforces the PnP format - exactly 7 +characters, 3 uppercase letters and 4 hex digits. + +If a raw string is used in the definition of the _HID object +(instead of the EISAID macro), the string must contain all +alphanumeric characters (e.g., "*PNP0011" is not allowed +because of the asterisk.) + +Implemented checking for invalid use of ACPI reserved names +for most of the name creation operators (Name, Device, +Event, Mutex, OperationRegion, PowerResource, Processor, and +ThermalZone.) Previously, this check was only performed for +control methods. + +Implemented an additional check on the Name operator to emit +an error if a reserved name that must be implemented in ASL +as a control method is used. We know that a reserved name +must be a method if it is defined with input arguments. + +The warning emitted when a namespace object reference is not +found during the cross reference phase has been changed into +an error. The "External" directive should be used for names +defined in other modules. + + +4) Tools and Utilities + +The 16-bit tools (adump16 and aexec16) have been regenerated +and tested. + +Fixed a problem with the output of both acpidump and adump16 +where the indentation of closing parentheses and brackets +was not aligned properly with the parent block. + + +---------------------------------------- +03 May 2002. Summary of changes for this release. + + +1) ACPI CA Core Subsystem Version 20020503: + +Added support a new OSL interface that allows the host +operating system software to override the DSDT found in the +firmware - AcpiOsTableOverride. With this interface, the +OSL can examine the version of the firmware DSDT and replace +it with a different one if desired. + +Added new external interfaces for accessing ACPI registers +from device drivers and other system software - +AcpiGetRegister and AcpiSetRegister. This was simply an +externalization of the existing AcpiHwBitRegister +interfaces. + +Fixed a regression introduced in the previous build where +the ASL/AML CreateField operator always returned an error, +"destination must be a NS Node". + +Extended the maximum time (before failure) to successfully +enable ACPI mode to 3 seconds. + +Code and Data Size: Current core subsystem library sizes are +shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release + Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K +Total + Debug Version: 142.4K Code, 58.3K Data, 200.7K +Total + Current Release: + Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K +Total + Debug Version: 142.9K Code, 58.4K Data, 201.3K +Total + + +2) Linux + +Enhanced ACPI init code for SMP. We are now fully MPS and +$PIR-free. While 3 out of 4 of our in-house systems work +fine, the last one still hangs when testing the LAPIC timer. + +Renamed many files in 2.5 kernel release to omit "acpi_" +from the name. + +Added warning on boot for Presario 711FR. + +Sleep improvements (Pavel Machek) + +ACPI can now be built without CONFIG_PCI enabled. + +IA64: Fixed memory map functions (JI Lee) + + +3) iASL Compiler Version X2043: + +Added support to allow the compiler to be integrated into +the MS VC++ development environment for one-button +compilation of single files or entire projects -- with error- +to-source-line mapping. + +Implemented support for compile-time constant folding for +the Type3, Type4, and Type5 opcodes first defined in the +ACPI 2.0 specification. This allows the ASL writer to use +expressions instead of Integer/Buffer/String constants in +terms that must evaluate to constants at compile time and +will also simplify the emitted AML in any such sub- +expressions that can be folded (evaluated at compile-time.) +This increases the size of the compiler significantly +because a portion of the ACPI CA AML interpreter is included +within the compiler in order to pre-evaluate constant +expressions. + +Fixed a problem with the "Unicode" ASL macro that caused the +compiler to fault. (This macro is used in conjunction with +the _STR reserved name.) + +Implemented an AML opcode optimization to use the Zero, One, +and Ones opcodes where possible to further reduce the size +of integer constants and thus reduce the overall size of the +generated AML code. + +Implemented error checking for new reserved terms for ACPI +version 2.0A. + +Implemented the -qr option to display the current list of +ACPI reserved names known to the compiler. + +Implemented the -qc option to display the current list of +ASL operators that are allowed within constant expressions +and can therefore be folded at compile time if the operands +are constants. + + +4) Documentation + +Updated the Programmer's Reference for new interfaces, data +types, and memory allocation model options. + +Updated the iASL Compiler User Reference to apply new format +and add information about new features and options. + +---------------------------------------- +19 April 2002. Summary of changes for this release. + +1) ACPI CA Core Subsystem Version 20020419: + +The source code base for the Core Subsystem has been +completely cleaned with PC-lint (FlexLint) for both 32-bit +and 64-bit versions. The Lint option files used are +included in the /acpi/generate/lint directory. + +Implemented enhanced status/error checking across the entire +Hardware manager subsystem. Any hardware errors (reported +from the OSL) are now bubbled up and will abort a running +control method. + +Fixed a problem where the per-ACPI-table integer width (32 +or 64) was stored only with control method nodes, causing a +fault when non-control method code was executed during table +loading. The solution implemented uses a global variable to +indicate table width across the entire ACPI subsystem. +Therefore, ACPI CA does not support mixed integer widths +across different ACPI tables (DSDT, SSDT). + +Fixed a problem where NULL extended fields (X fields) in an +ACPI 2.0 ACPI FADT caused the table load to fail. Although +the existing ACPI specification is a bit fuzzy on this +topic, the new behavior is to fall back on a ACPI 1.0 field +if the corresponding ACPI 2.0 X field is zero (even though +the table revision indicates a full ACPI 2.0 table.) The +ACPI specification will be updated to clarify this issue. + +Fixed a problem with the SystemMemory operation region +handler where memory was always accessed byte-wise even if +the AML-specified access width was larger than a byte. This +caused problems on systems with memory-mapped I/O. Memory +is now accessed with the width specified. On systems that +do not support non-aligned transfers, a check is made to +guarantee proper address alignment before proceeding in +order to avoid an AML-caused alignment fault within the +kernel. + +Fixed a problem with the ExtendedIrq resource where only one +byte of the 4-byte Irq field was extracted. + +Fixed the AcpiExDigitsNeeded() procedure to support _UID. +This function was out of date and required a rewrite. + +Code and Data Size: Current core subsystem library sizes are +shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release + Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K +Total + Debug Version: 139.8K Code, 57.4K Data, 197.2K +Total + Current Release: + Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K +Total + Debug Version: 142.4K Code, 58.3K Data, 200.7K +Total + + +2) Linux + +PCI IRQ routing fixes (Dominik Brodowski) + + +3) iASL Compiler Version X2042: + +Implemented an additional compile-time error check for a +field unit whose size + minimum access width would cause a +run-time access beyond the end-of-region. Previously, only +the field size itself was checked. + +The Core subsystem and iASL compiler now share a common +parse object in preparation for compile-time evaluation of +the type 3/4/5 ASL operators. + + +---------------------------------------- +Summary of changes for this release: 03_29_02 + +1) ACPI CA Core Subsystem Version 20020329: + +Implemented support for late evaluation of TermArg operands +to Buffer and Package objects. This allows complex +expressions to be used in the declarations of these object +types. + +Fixed an ACPI 1.0 compatibility issue when reading Fields. +In ACPI 1.0, if the field was larger than 32 bits, it was +returned as a buffer – otherwise it was returned as an +integer. In ACPI 2.0, the field is returned as a buffer +only if the field is larger than 64 bits. The TableRevision +is now considered when making this conversion to avoid +incompatibility with existing ASL code. + +Implemented logical addressing for AcpiOsGetRootPointer. +This allows an RSDP with either a logical or physical +address. With this support, the host OS can now override +all ACPI tables with one logical RSDP. Includes +implementation of “typed” pointer support to allow a common +data type for both physical and logical pointers internally. +This required a change to the AcpiOsGetRootPointer +interface. + +Implemented the use of ACPI 2.0 Generic Address Structures +for all GPE, Fixed Event, and PM Timer I/O. This allows the +use of memory mapped I/O for these ACPI features. + +Initialization now ignores not only non-required tables (All +tables other than the FADT, FACS, DSDT, and SSDTs), but also +does not validate the table headers of unrecognized tables. + +Fixed a problem where a notify handler could only be +installed/removed on an object of type Device. All "notify" +objects are now supported -- Devices, Processor, Power, and +Thermal. + +Removed most verbosity from the ACPI_DB_INFO debug level. +Only critical information is returned when this debug level +is enabled. + +Code and Data Size: Current core subsystem library sizes are +shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release + Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K +Total + Debug Version: 138.0K Code, 56.6K Data, 194.6K +Total + Current Release: + Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K +Total + Debug Version: 139.8K Code, 57.4K Data, 197.2K +Total + + +2) Linux: + +The processor driver (acpi_processor.c) now fully supports +ACPI 2.0-based processor performance control (e.g. Intel(R) +SpeedStep(TM) technology) Note that older laptops that only +have the Intel "applet" interface are not supported through +this. The 'limit' and 'performance' interface (/proc) are +fully functional. [Note that basic policy for controlling +performance state transitions will be included in the next +version of ospmd.] The idle handler was modified to more +aggressively use C2, and PIIX4 errata handling underwent a +complete overhaul (big thanks to Dominik Brodowski). + +Added support for ACPI-PCI device binding (acpi_pci_root.c). +_ADR-based devices in the ACPI namespace are now dynamically +bound (associated) with their PCI counterparts (e.g. PCI1- +>01:00.0). This allows, among other things, ACPI to resolve +bus numbers for subordinate PCI bridges. + +Enhanced PCI IRQ routing to get the proper bus number for +_PRT entries defined underneath PCI bridges. + +Added IBM 600E to bad bios list due to invalid _ADR value +for PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ +routing. + +In the process of adding full MADT support (e.g. IOAPIC) for +IA32 (acpi.c, mpparse.c) -- stay tuned. + +Added back visual differentiation between fixed-feature and +control-method buttons in dmesg. Buttons are also subtyped +(e.g. button/power/PWRF) to simplify button identification. + +We no longer use -Wno-unused when compiling debug. Please +ignore any "_THIS_MODULE defined but not used" messages. + +Can now shut down the system using "magic sysrq" key. + + +3) iASL Compiler version 2041: + +Fixed a problem where conversion errors for +hex/octal/decimal constants were not reported. + +Implemented a fix for the General Register template Address +field. This field was 8 bits when it should be 64. + +Fixed a problem where errors/warnings were no longer being +emitted within the listing output file. + +Implemented the ACPI 2.0A restriction on ACPI Table +Signatures to exactly 4 characters, alphanumeric only. + + + + +---------------------------------------- +Summary of changes for this release: 03_08_02 + + +1) ACPI CA Core Subsystem Version 20020308: + +Fixed a problem with AML Fields where the use of the +"AccessAny" keyword could cause an interpreter error due to +attempting to read or write beyond the end of the parent +Operation Region. + +Fixed a problem in the SystemMemory Operation Region handler +where an attempt was made to map memory beyond the end of +the region. This was the root cause of the "AE_ERROR" and +"AE_NO_MEMORY" errors on some Linux systems. + +Fixed a problem where the interpreter/namespace "search to +root" algorithm was not functioning for some object types. +Relaxed the internal restriction on the search to allow +upsearches for all external object types as well as most +internal types. + + +2) Linux: + +We now use safe_halt() macro versus individual calls to sti +| hlt. + +Writing to the processor limit interface should now work. +"echo 1" will increase the limit, 2 will decrease, and 0 +will reset to the default. + + +3) ASL compiler: + +Fixed segfault on Linux version. + + +---------------------------------------- +Summary of changes for this release: 02_25_02 + +1) ACPI CA Core Subsystem: + + +Fixed a problem where the GPE bit masks were not initialized +properly, causing erratic GPE behavior. + +Implemented limited support for multiple calling +conventions. The code can be generated with either the VPL +(variable parameter list, or "C") convention, or the FPL +(fixed parameter list, or "Pascal") convention. The core +subsystem is about 3.4% smaller when generated with FPL. + + +2) Linux + +Re-add some /proc/acpi/event functionality that was lost +during the rewrite + +Resolved issue with /proc events for fixed-feature buttons +showing up as the system device. + +Fixed checks on C2/C3 latencies to be inclusive of maximum +values. + +Replaced AE_ERRORs in acpi_osl.c with more specific error +codes. + +Changed ACPI PRT option from "pci=noacpi-routing" to +"pci=noacpi" + +Fixed limit interface & usage to fix bugs with passive +cooling hysterisis. + +Restructured PRT support. + + +---------------------------------------- +Summary of changes for this label: 02_14_02 + + +1) ACPI CA Core Subsystem: + +Implemented support in AcpiLoadTable to allow loading of +FACS and FADT tables. + +Suport for the now-obsolete interim 0.71 64-bit ACPI tables +has been removed. All 64-bit platforms should be migrated +to the ACPI 2.0 tables. The actbl71.h header has been +removed from the source tree. + +All C macros defined within the subsystem have been prefixed +with "ACPI_" to avoid collision with other system include +files. + +Removed the return value for the two AcpiOsPrint interfaces, +since it is never used and causes lint warnings for ignoring +the return value. + +Added error checking to all internal mutex acquire and +release calls. Although a failure from one of these +interfaces is probably a fatal system error, these checks +will cause the immediate abort of the currently executing +method or interface. + +Fixed a problem where the AcpiSetCurrentResources interface +could fault. This was a side effect of the deployment of +the new memory allocation model. + +Fixed a couple of problems with the Global Lock support +introduced in the last major build. The "common" (1.0/2.0) +internal FACS was being overwritten with the FACS signature +and clobbering the Global Lock pointer. Also, the actual +firmware FACS was being unmapped after construction of the +"common" FACS, preventing access to the actual Global Lock +field within it. The "common" internal FACS is no longer +installed as an actual ACPI table; it is used simply as a +global. + +Code and Data Size: Current core subsystem library sizes are +shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release (02_07_01) + Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K +Total + Debug Version: 136.9K Code, 56.4K Data, 193.3K +Total + Current Release: + Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K +Total + Debug Version: 138.0K Code, 56.6K Data, 194.6K +Total + + +2) Linux + +Updated Linux-specific code for core macro and OSL interface +changes described above. + +Improved /proc/acpi/event. It now can be opened only once +and has proper poll functionality. + +Fixed and restructured power management (acpi_bus). + +Only create /proc "view by type" when devices of that class +exist. + +Fixed "charging/discharging" bug (and others) in +acpi_battery. + +Improved thermal zone code. + + +3) ASL Compiler, version X2039: + +Implemented the new compiler restriction on ASL String +hex/octal escapes to non-null, ASCII values. An error +results if an invalid value is used. (This will require an +ACPI 2.0 specification change.) + +AML object labels that are output to the optional C and ASM +source are now prefixed with both the ACPI table signature +and table ID to help guarantee uniqueness within a large +BIOS project. + + +---------------------------------------- +Summary of changes for this label: 02_01_02 + +1) ACPI CA Core Subsystem: + +ACPI 2.0 support is complete in the entire Core Subsystem +and the ASL compiler. All new ACPI 2.0 operators are +implemented and all other changes for ACPI 2.0 support are +complete. With simultaneous code and data optimizations +throughout the subsystem, ACPI 2.0 support has been +implemented with almost no additional cost in terms of code +and data size. + +Implemented a new mechanism for allocation of return +buffers. If the buffer length is set to +ACPI_ALLOCATE_BUFFER, the buffer will be allocated on behalf +of the caller. Consolidated all return buffer validation +and allocation to a common procedure. Return buffers will +be allocated via the primary OSL allocation interface since +it appears that a separate pool is not needed by most users. +If a separate pool is required for these buffers, the caller +can still use the original mechanism and pre-allocate the +buffer(s). + +Implemented support for string operands within the DerefOf +operator. + +Restructured the Hardware and Event managers to be table +driven, simplifying the source code and reducing the amount +of generated code. + +Split the common read/write low-level ACPI register bitfield +procedure into a separate read and write, simplifying the +code considerably. + +Obsoleted the AcpiOsCallocate OSL interface. This interface +was used only a handful of times and didn't have enough +critical mass for a separate interface. Replaced with a +common calloc procedure in the core. + +Fixed a reported problem with the GPE number mapping +mechanism that allows GPE1 numbers to be non-contiguous with +GPE0. Reorganized the GPE information and shrunk a large +array that was originally large enough to hold info for all +possible GPEs (256) to simply large enough to hold all GPEs +up to the largest GPE number on the machine. + +Fixed a reported problem with resource structure alignment +on 64-bit platforms. + +Changed the AcpiEnableEvent and AcpiDisableEvent external +interfaces to not require any flags for the common case of +enabling/disabling a GPE. + +Implemented support to allow a "Notify" on a Processor +object. + +Most TBDs in comments within the source code have been +resolved and eliminated. + +Fixed a problem in the interpreter where a standalone parent +prefix (^) was not handled correctly in the interpreter and +debugger. + +Removed obsolete and unnecessary GPE save/restore code. + +Implemented Field support in the ASL Load operator. This +allows a table to be loaded from a named field, in addition +to loading a table directly from an Operation Region. + +Implemented timeout and handle support in the external +Global Lock interfaces. + +Fixed a problem in the AcpiDump utility where pathnames were +no longer being generated correctly during the dump of named +objects. + +Modified the AML debugger to give a full display of if/while +predicates instead of just one AML opcode at a time. (The +predicate can have several nested ASL statements.) The old +method was confusing during single stepping. + +Code and Data Size: Current core subsystem library sizes are +shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release (12_18_01) + Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K +Total + Debug Version: 138.3K Code, 55.9K Data, 194.2K +Total + Current Release: + Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K +Total + Debug Version: 136.9K Code, 56.4K Data, 193.3K +Total + +2) Linux + + Implemented fix for PIIX reverse throttling errata +(Processor driver) + +Added new Limit interface (Processor and Thermal drivers) + +New thermal policy (Thermal driver) + +Many updates to /proc + +Battery "low" event support (Battery driver) + +Supports ACPI PCI IRQ routing (PCI Link and PCI root +drivers) + +IA32 - IA64 initialization unification, no longer +experimental + +Menuconfig options redesigned + +3) ASL Compiler, version X2037: + +Implemented several new output features to simplify +integration of AML code into firmware: 1) Output the AML in +C source code with labels for each named ASL object. The +original ASL source code is interleaved as C comments. 2) +Output the AML in ASM source code with labels and +interleaved ASL source. 3) Output the AML in raw hex +table form, in either C or ASM. + +Implemented support for optional string parameters to the +LoadTable operator. + +Completed support for embedded escape sequences within +string literals. The compiler now supports all single +character escapes as well as the Octal and Hex escapes. +Note: the insertion of a null byte into a string literal +(via the hex/octal escape) causes the string to be +immediately terminated. A warning is issued. + +Fixed a problem where incorrect AML was generated for the +case where an ASL namepath consists of a single parent +prefix ( + +) with no trailing name segments. + +The compiler has been successfully generated with a 64-bit C +compiler. + + + + +---------------------------------------- +Summary of changes for this label: 12_18_01 + +1) Linux + +Enhanced blacklist with reason and severity fields. Any +table's signature may now be used to identify a blacklisted +system. + +Call _PIC control method to inform the firmware which +interrupt model the OS is using. Turn on any disabled link +devices. + +Cleaned up busmgr /proc error handling (Andreas Dilger) + + 2) ACPI CA Core Subsystem: + +Implemented ACPI 2.0 semantics for the "Break" operator +(Exit from while loop) + +Completed implementation of the ACPI 2.0 "Continue", +"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" +operators. All new ACPI 2.0 operators are now implemented +in both the ASL compiler and the AML interpreter. The only +remaining ACPI 2.0 task is support for the String data type +in the DerefOf operator. Fixed a problem with AcquireMutex +where the status code was lost if the caller had to actually +wait for the mutex. + +Increased the maximum ASL Field size from 64K bits to 4G +bits. + +Completed implementation of the external Global Lock +interfaces -- AcpiAcquireGlobalLock and +AcpiReleaseGlobalLock. The Timeout and Handler parameters +were added. + +Completed another pass at removing warnings and issues when +compiling with 64-bit compilers. The code now compiles +cleanly with the Intel 64-bit C/C++ compiler. Most notably, +the pointer add and subtract (diff) macros have changed +considerably. + +Created and deployed a new ACPI_SIZE type that is 64-bits +wide on 64-bit platforms, 32-bits on all others. This type +is used wherever memory allocation and/or the C sizeof() +operator is used, and affects the OSL memory allocation +interfaces AcpiOsAllocate and AcpiOsCallocate. + +Implemented sticky user breakpoints in the AML debugger. + +Code and Data Size: Current core subsystem library sizes are +shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release (12_05_01) + Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K +Total + Debug Version: 136.2K Code, 55.6K Data, 191.8K +Total + Current Release: + Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K +Total + Debug Version: 138.3K Code, 55.9K Data, 194.2K +Total + + 3) ASL Compiler, version X2034: + +Now checks for (and generates an error if detected) the use +of a Break or Continue statement without an enclosing While +statement. + +Successfully generated the compiler with the Intel 64-bit C +compiler. + + ---------------------------------------- +Summary of changes for this label: 12_05_01 + + 1) ACPI CA Core Subsystem: + +The ACPI 2.0 CopyObject operator is fully implemented. This +operator creates a new copy of an object (and is also used +to bypass the "implicit conversion" mechanism of the Store +operator.) + +The ACPI 2.0 semantics for the SizeOf operator are fully +implemented. The change is that performing a SizeOf on a +reference object causes an automatic dereference of the +object to tha actual value before the size is evaluated. +This behavior was undefined in ACPI 1.0. + +The ACPI 2.0 semantics for the Extended IRQ resource +descriptor have been implemented. The interrupt polarity +and mode are now independently set. + +Fixed a problem where ASL Constants (Zero, One, Ones, +Revision) appearing in Package objects were not properly +converted to integers when the internal Package was +converted to an external object (via the AcpiEvaluateObject +interface.) + +Fixed a problem with the namespace object deletion mechanism +for objects created by control methods. There were two +parts to this problem: 1) Objects created during the +initialization phase method parse were not being deleted, +and 2) The object owner ID mechanism to track objects was +broken. + +Fixed a problem where the use of the ASL Scope operator +within a control method would result in an invalid opcode +exception. + +Fixed a problem introduced in the previous label where the +buffer length required for the _PRT structure was not being +returned correctly. + +Code and Data Size: Current core subsystem library sizes are +shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release (11_20_01) + Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K +Total + Debug Version: 135.1K Code, 55.4K Data, 190.5K +Total + + Current Release: + Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K +Total + Debug Version: 136.2K Code, 55.6K Data, 191.8K +Total + + 2) Linux: + +Updated all files to apply cleanly against 2.4.16. + +Added basic PCI Interrupt Routing Table (PRT) support for +IA32 (acpi_pci.c), and unified the PRT code for IA32 and +IA64. This version supports both static and dyanmic PRT +entries, but dynamic entries are treated as if they were +static (not yet reconfigurable). Architecture- specific +code to use this data is absent on IA32 but should be +available shortly. + +Changed the initialization sequence to start the ACPI +interpreter (acpi_init) prior to initialization of the PCI +driver (pci_init) in init/main.c. This ordering is required +to support PRT and facilitate other (future) enhancement. A +side effect is that the ACPI bus driver and certain device +drivers can no longer be loaded as modules. + +Modified the 'make menuconfig' options to allow PCI +Interrupt Routing support to be included without the ACPI +Bus and other device drivers. + + 3) ASL Compiler, version X2033: + +Fixed some issues with the use of the new CopyObject and +DataTableRegion operators. Both are fully functional. + + ---------------------------------------- +Summary of changes for this label: 11_20_01 + + 20 November 2001. Summary of changes for this release. + + 1) ACPI CA Core Subsystem: + +Updated Index support to match ACPI 2.0 semantics. Storing +a Integer, String, or Buffer to an Index of a Buffer will +store only the least-significant byte of the source to the +Indexed buffer byte. Multiple writes are not performed. + +Fixed a problem where the access type used in an AccessAs +ASL operator was not recorded correctly into the field +object. + +Fixed a problem where ASL Event objects were created in a +signalled state. Events are now created in an unsignalled +state. + +The internal object cache is now purged after table loading +and initialization to reduce the use of dynamic kernel +memory -- on the assumption that object use is greatest +during the parse phase of the entire table (versus the run- +time use of individual control methods.) + +ACPI 2.0 variable-length packages are now fully operational. + +Code and Data Size: Code and Data optimizations have +permitted new feature development with an actual reduction +in the library size. Current core subsystem library sizes +are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release (11_09_01): + Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K +Total + Debug Version: 134.5K Code, 55.4K Data, 189.9K +Total + + Current Release: + Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K +Total + Debug Version: 135.1K Code, 55.4K Data, 190.5K +Total + + 2) Linux: + +Enhanced the ACPI boot-time initialization code to allow the +use of Local APIC tables for processor enumeration on IA-32, +and to pave the way for a fully MPS-free boot (on SMP +systems) in the near future. This functionality replaces +arch/i386/kernel/acpitables.c, which was introduced in an +earlier 2.4.15-preX release. To enable this feature you +must add "acpi_boot=on" to the kernel command line -- see +the help entry for CONFIG_ACPI_BOOT for more information. +An IA-64 release is in the works... + +Restructured the configuration options to allow boot-time +table parsing support without inclusion of the ACPI +Interpreter (and other) code. + +NOTE: This release does not include fixes for the reported +events, power-down, and thermal passive cooling issues +(coming soon). + + 3) ASL Compiler: + +Added additional typechecking for Fields within restricted +access Operation Regions. All fields within EC and CMOS +regions must be declared with ByteAcc. All fields withing +SMBus regions must be declared with the BufferAcc access +type. + +Fixed a problem where the listing file output of control +methods no longer interleaved the actual AML code with the +ASL source code. + + + +---------------------------------------- +Summary of changes for this label: 11_09_01 + +1) ACPI CA Core Subsystem: + +Implemented ACPI 2.0-defined support for writes to fields +with a Buffer, String, or Integer source operand that is +smaller than the target field. In these cases, the source +operand is zero-extended to fill the target field. + +Fixed a problem where a Field starting bit offset (within +the parent operation region) was calculated incorrectly if +the alignment of the field differed from the access width. +This affected CreateWordField, CreateDwordField, +CreateQwordField, and possibly other fields that use the +"AccessAny" keyword. + +Fixed a problem introduced in the 11_02_01 release where +indirect stores through method arguments did not operate +correctly. + +2) Linux: + +Implemented boot-time ACPI table parsing support +(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This +code facilitates the use of ACPI tables (e.g. MADT, SRAT) +rather than legacy BIOS interfaces (e.g. MPS) for the +configuration of system processors, memory, and interrupts +during setup_arch(). Note that this patch does not include +the required architecture-specific changes required to apply +this information -- subsequent patches will be posted for +both IA32 and IA64 to achieve this. + +Added low-level sleep support for IA32 platforms, courtesy +of Pat Mochel. This allows IA32 systems to transition +to/from various sleeping states (e.g. S1, S3), although the +lack of a centralized driver model and power-manageable +drivers will prevent its (successful) use on most systems. + +Revamped the ACPI 'menuconfig' layout: created new "ACPI +Support" submenu, unified IA32 and IA64 options, added new +"Boot using ACPI tables" option, etc. + +Increased the default timeout for the EC driver from 1ms to +10ms (1000 cycles of 10us) to try to address AE_TIME errors +during EC transactions. + + ---------------------------------------- +Summary of changes for this label: 11_02_01 + +1) ACPI CA Core Subsystem: + +ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access +(QWordAcc keyword). All ACPI 2.0 64-bit support is now +implemented. + +OSL Interfaces: Several of the OSL (AcpiOs*) interfaces +required changes to support ACPI 2.0 Qword field access. +Read/Write PciConfiguration(), Read/Write Memory(), and +Read/Write Port() now accept an ACPI_INTEGER (64 bits) as +the value parameter. Also, the value parameter for the +address space handler interface is now an ACPI_INTEGER. OSL +implementations of these interfaces must now handle the case +where the Width parameter is 64. + +Index Fields: Fixed a problem where unaligned bit assembly +and disassembly for IndexFields was not supported correctly. + +Index and Bank Fields: Nested Index and Bank Fields are now +supported. During field access, a check is performed to +ensure that the value written to an Index or Bank register +is not out of the range of the register. The Index (or +Bank) register is written before each access to the field +data. Future support will include allowing individual +IndexFields to be wider than the DataRegister width. + +Fields: Fixed a problem where the AML interpreter was +incorrectly attempting to write beyond the end of a +Field/OpRegion. This was a boundary case that occurred when +a DWORD field was written to a BYTE access OpRegion, forcing +multiple writes and causing the interpreter to write one +datum too many. + +Fields: Fixed a problem with Field/OpRegion access where the +starting bit address of a field was incorrectly calculated +if the current access type was wider than a byte (WordAcc, +DwordAcc, or QwordAcc). + +Fields: Fixed a problem where forward references to +individual FieldUnits (individual Field names within a Field +definition) were not resolved during the AML table load. + +Fields: Fixed a problem where forward references from a +Field definition to the parent Operation Region definition +were not resolved during the AML table load. + +Fields: Duplicate FieldUnit names within a scope are now +detected during AML table load. + +Acpi Interfaces: Fixed a problem where the AcpiGetName() +interface returned an incorrect name for the root node. + +Code and Data Size: Code and Data optimizations have +permitted new feature development with an actual reduction +in the library size. Current core subsystem library sizes +are shown below. These are the code and data sizes for the +acpica.lib produced by the Microsoft Visual C++ 6.0 +compiler, and these values do not include any ACPI driver or +OSPM code. The debug version of the code includes the debug +output trace mechanism and has a larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Release (10_18_01): + Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K +Total + Debug Version: 136.7K Code, 57.4K Data, 194.2K +Total + + Current Release: + Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K +Total + Debug Version: 134.5K Code, 55.4K Data, 189.9K +Total + + 2) Linux: + +Improved /proc processor output (Pavel Machek) Re-added +MODULE_LICENSE("GPL") to all modules. + + 3) ASL Compiler version X2030: + +Duplicate FieldUnit names within a scope are now detected +and flagged as errors. + + 4) Documentation: + +Programmer Reference updated to reflect OSL and address +space handler interface changes described above. + +---------------------------------------- +Summary of changes for this label: 10_18_01 + +ACPI CA Core Subsystem: + +Fixed a problem with the internal object reference count +mechanism that occasionally caused premature object +deletion. This resolves all of the outstanding problem +reports where an object is deleted in the middle of an +interpreter evaluation. Although this problem only showed +up in rather obscure cases, the solution to the problem +involved an adjustment of all reference counts involving +objects attached to namespace nodes. + +Fixed a problem with Field support in the interpreter where +writing to an aligned field whose length is an exact +multiple (2 or greater) of the field access granularity +would cause an attempt to write beyond the end of the field. + +The top level AML opcode execution functions within the +interpreter have been renamed with a more meaningful and +consistent naming convention. The modules exmonad.c and +exdyadic.c were eliminated. New modules are exoparg1.c, +exoparg2.c, exoparg3.c, and exoparg6.c. + +Support for the ACPI 2.0 "Mid" ASL operator has been +implemented. + +Fixed a problem where the AML debugger was causing some +internal objects to not be deleted during subsystem +termination. + +Fixed a problem with the external AcpiEvaluateObject +interface where the subsystem would fault if the named +object to be evaluated refered to a constant such as Zero, +Ones, etc. + +Fixed a problem with IndexFields and BankFields where the +subsystem would fault if the index, data, or bank registers +were not defined in the same scope as the field itself. + +Added printf format string checking for compilers that +support this feature. Corrected more than 50 instances of +issues with format specifiers within invocations of +ACPI_DEBUG_PRINT throughout the core subsystem code. + +The ASL "Revision" operator now returns the ACPI support +level implemented in the core - the value "2" since the ACPI +2.0 support is more than 50% implemented. + +Enhanced the output of the AML debugger "dump namespace" +command to output in a more human-readable form. + +Current core subsystem library code sizes are shown below. +These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The +debug version of the code includes the full debug trace +mechanism -- leading to a much larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Previous Label (09_20_01): + Non-Debug Version: 65K Code, 5K Data, 70K +Total + Debug Version: 138K Code, 58K Data, 196K +Total + + This Label: + Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K +Total + Debug Version: 136.7K Code, 57.4K Data, 194.2K +Total + +Linux: + +Implemented a "Bad BIOS Blacklist" to track machines that +have known ASL/AML problems. + +Enhanced the /proc interface for the thermal zone driver and +added support for _HOT (the critical suspend trip point). +The 'info' file now includes threshold/policy information, +and allows setting of _SCP (cooling preference) and _TZP +(polling frequency) values to the 'info' file. Examples: +"echo tzp=5 > info" sets the polling frequency to 5 seconds, +and "echo scp=1 > info" sets the cooling preference to the +passive/quiet mode (if supported by the ASL). + +Implemented a workaround for a gcc bug that resuted in an +OOPs when loading the control method battery driver. + + ---------------------------------------- +Summary of changes for this label: 09_20_01 + + ACPI CA Core Subsystem: + +The AcpiEnableEvent and AcpiDisableEvent interfaces have +been modified to allow individual GPE levels to be flagged +as wake-enabled (i.e., these GPEs are to remain enabled when +the platform sleeps.) + +The AcpiEnterSleepState and AcpiLeaveSleepState interfaces +now support wake-enabled GPEs. This means that upon +entering the sleep state, all GPEs that are not wake-enabled +are disabled. When leaving the sleep state, these GPEs are +reenabled. + +A local double-precision divide/modulo module has been added +to enhance portability to OS kernels where a 64-bit math +library is not available. The new module is "utmath.c". + +Several optimizations have been made to reduce the use of +CPU stack. Originally over 2K, the maximum stack usage is +now below 2K at 1860 bytes (1.82k) + +Fixed a problem with the AcpiGetFirmwareTable interface +where the root table pointer was not mapped into a logical +address properly. + +Fixed a problem where a NULL pointer was being dereferenced +in the interpreter code for the ASL Notify operator. + +Fixed a problem where the use of the ASL Revision operator +returned an error. This operator now returns the current +version of the ACPI CA core subsystem. + +Fixed a problem where objects passed as control method +parameters to AcpiEvaluateObject were always deleted at +method termination. However, these objects may end up being +stored into the namespace by the called method. The object +reference count mechanism was applied to these objects +instead of a force delete. + +Fixed a problem where static strings or buffers (contained +in the AML code) that are declared as package elements +within the ASL code could cause a fault because the +interpreter would attempt to delete them. These objects are +now marked with the "static object" flag to prevent any +attempt to delete them. + +Implemented an interpreter optimization to use operands +directly from the state object instead of extracting the +operands to local variables. This reduces stack use and +code size, and improves performance. + +The module exxface.c was eliminated as it was an unnecessary +extra layer of code. + +Current core subsystem library code sizes are shown below. +These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The +debug version of the code includes the full debug trace +mechanism -- leading to a much larger code and data size. +Note that these values will vary depending on the efficiency +of the compiler and the compiler options used during +generation. + + Non-Debug Version: 65K Code, 5K Data, 70K Total +(Previously 69K) Debug Version: 138K Code, 58K Data, +196K Total (Previously 195K) + +Linux: + +Support for ACPI 2.0 64-bit integers has been added. All +ACPI Integer objects are now 64 bits wide + +All Acpi data types and structures are now in lower case. +Only Acpi macros are upper case for differentiation. + + Documentation: + +Changes to the external interfaces as described above. + + ---------------------------------------- +Summary of changes for this label: 08_31_01 + + ACPI CA Core Subsystem: + +A bug with interpreter implementation of the ASL Divide +operator was found and fixed. The implicit function return +value (not the explicit store operands) was returning the +remainder instead of the quotient. This was a longstanding +bug and it fixes several known outstanding issues on various +platforms. + +The ACPI_DEBUG_PRINT and function trace entry/exit macros +have been further optimized for size. There are 700 +invocations of the DEBUG_PRINT macro alone, so each +optimization reduces the size of the debug version of the +subsystem significantly. + +A stack trace mechanism has been implemented. The maximum +stack usage is about 2K on 32-bit platforms. The debugger +command "stat stack" will display the current maximum stack +usage. + +All public symbols and global variables within the subsystem +are now prefixed with the string "Acpi". This keeps all of +the symbols grouped together in a kernel map, and avoids +conflicts with other kernel subsystems. + +Most of the internal fixed lookup tables have been moved +into the code segment via the const operator. + +Several enhancements have been made to the interpreter to +both reduce the code size and improve performance. + +Current core subsystem library code sizes are shown below. +These are the code and data sizes for the acpica.lib +produced by the Microsoft Visual C++ 6.0 compiler, and these +values do not include any ACPI driver or OSPM code. The +debug version of the code includes the full debug trace +mechanism which contains over 700 invocations of the +DEBUG_PRINT macro, 500 function entry macro invocations, and +over 900 function exit macro invocations -- leading to a +much larger code and data size. Note that these values will +vary depending on the efficiency of the compiler and the +compiler options used during generation. + + Non-Debug Version: 64K Code, 5K Data, 69K Total +Debug Version: 137K Code, 58K Data, 195K Total + + Linux: + +Implemented wbinvd() macro, pending a kernel-wide +definition. + +Fixed /proc/acpi/event to handle poll() and short reads. + + ASL Compiler, version X2026: + +Fixed a problem introduced in the previous label where the +AML code emitted for package objects produced packages with +zero length. + + ---------------------------------------- +Summary of changes for this label: 08_16_01 + +ACPI CA Core Subsystem: + +The following ACPI 2.0 ASL operators have been implemented +in the AML interpreter (These are already supported by the +Intel ASL compiler): ToDecimalString, ToHexString, +ToString, ToInteger, and ToBuffer. Support for 64-bit AML +constants is implemented in the AML parser, debugger, and +disassembler. + +The internal memory tracking mechanism (leak detection code) +has been upgraded to reduce the memory overhead (a separate +tracking block is no longer allocated for each memory +allocation), and now supports all of the internal object +caches. + +The data structures and code for the internal object caches +have been coelesced and optimized so that there is a single +cache and memory list data structure and a single group of +functions that implement generic cache management. This has +reduced the code size in both the debug and release versions +of the subsystem. + +The DEBUG_PRINT macro(s) have been optimized for size and +replaced by ACPI_DEBUG_PRINT. The syntax for this macro is +slightly different, because it generates a single call to an +internal function. This results in a savings of about 90 +bytes per invocation, resulting in an overall code and data +savings of about 16% in the debug version of the subsystem. + + Linux: + +Fixed C3 disk corruption problems and re-enabled C3 on +supporting machines. + +Integrated low-level sleep code by Patrick Mochel. + +Further tweaked source code Linuxization. + +Other minor fixes. + + ASL Compiler: + +Support for ACPI 2.0 variable length packages is +fixed/completed. + +Fixed a problem where the optional length parameter for the +ACPI 2.0 ToString operator. + +Fixed multiple extraneous error messages when a syntax error +is detected within the declaration line of a control method. + + ---------------------------------------- +Summary of changes for this label: 07_17_01 + +ACPI CA Core Subsystem: + +Added a new interface named AcpiGetFirmwareTable to obtain +any ACPI table via the ACPI signature. The interface can be +called at any time during kernel initialization, even before +the kernel virtual memory manager is initialized and paging +is enabled. This allows kernel subsystems to obtain ACPI +tables very early, even before the ACPI CA subsystem is +initialized. + +Fixed a problem where Fields defined with the AnyAcc +attribute could be resolved to the incorrect address under +the following conditions: 1) the field width is larger than +8 bits and 2) the parent operation region is not defined on +a DWORD boundary. + +Fixed a problem where the interpreter is not being locked +during namespace initialization (during execution of the +_INI control methods), causing an error when an attempt is +made to release it later. + +ACPI 2.0 support in the AML Interpreter has begun and will +be ongoing throughout the rest of this year. In this label, +The Mod operator is implemented. + +Added a new data type to contain full PCI addresses named +ACPI_PCI_ID. This structure contains the PCI Segment, Bus, +Device, and Function values. + + Linux: + +Enhanced the Linux version of the source code to change most +capitalized ACPI type names to lowercase. For example, all +instances of ACPI_STATUS are changed to acpi_status. This +will result in a large diff, but the change is strictly +cosmetic and aligns the CA code closer to the Linux coding +standard. + +OSL Interfaces: + +The interfaces to the PCI configuration space have been +changed to add the PCI Segment number and to split the +single 32-bit combined DeviceFunction field into two 16-bit +fields. This was accomplished by moving the four values +that define an address in PCI configuration space (segment, +bus, device, and function) to the new ACPI_PCI_ID structure. + +The changes to the PCI configuration space interfaces led to +a reexamination of the complete set of address space access +interfaces for PCI, I/O, and Memory. The previously +existing 18 interfaces have proven difficult to maintain +(any small change must be propagated across at least 6 +interfaces) and do not easily allow for future expansion to +64 bits if necessary. Also, on some systems, it would not +be appropriate to demultiplex the access width (8, 16, 32,or +64) before calling the OSL if the corresponding native OS +interfaces contain a similar access width parameter. For +these reasons, the 18 address space interfaces have been +replaced by these 6 new ones: + +AcpiOsReadPciConfiguration +AcpiOsWritePciConfiguration +AcpiOsReadMemory +AcpiOsWriteMemory +AcpiOsReadPort +AcpiOsWritePort + +Added a new interface named AcpiOsGetRootPointer to allow +the OSL to perform the platform and/or OS-specific actions +necessary to obtain the ACPI RSDP table pointer. On IA-32 +platforms, this interface will simply call down to the CA +core to perform the low-memory search for the table. On IA- +64, the RSDP is obtained from EFI. Migrating this interface +to the OSL allows the CA core to remain OS and platform +independent. + +Added a new interface named AcpiOsSignal to provide a +generic "function code and pointer" interface for various +miscellaneous signals and notifications that must be made to +the host OS. The first such signals are intended to +support the ASL Fatal and Breakpoint operators. In the +latter case, the AcpiOsBreakpoint interface has been +obsoleted. + +The definition of the AcpiFormatException interface has been +changed to simplify its use. The caller no longer must +supply a buffer to the call; A pointer to a const string is +now returned directly. This allows the call to be easily +used in printf statements, etc. since the caller does not +have to manage a local buffer. + + ASL Compiler, Version X2025: + +The ACPI 2.0 Switch/Case/Default operators have been +implemented and are fully functional. They will work with +all ACPI 1.0 interpreters, since the operators are simply +translated to If/Else pairs. + +The ACPI 2.0 ElseIf operator is implemented and will also +work with 1.0 interpreters, for the same reason. + +Implemented support for ACPI 2.0 variable-length packages. +These packages have a separate opcode, and their size is +determined by the interpreter at run-time. + +Documentation The ACPI CA Programmer Reference has been +updated to reflect the new interfaces and changes to +existing interfaces. + + ------------------------------------------ +Summary of changes for this label: 06_15_01 + + ACPI CA Core Subsystem: + +Fixed a problem where a DWORD-accessed field within a Buffer +object would get its byte address inadvertently rounded down +to the nearest DWORD. Buffers are always Byte-accessible. + + ASL Compiler, version X2024: + +Fixed a problem where the Switch() operator would either +fault or hang the compiler. Note however, that the AML code +for this ACPI 2.0 operator is not yet implemented. + +Compiler uses the new AcpiOsGetTimer interface to obtain +compile timings. + +Implementation of the CreateField operator automatically +converts a reference to a named field within a resource +descriptor from a byte offset to a bit offset if required. + +Added some missing named fields from the resource descriptor +support. These are the names that are automatically created +by the compiler to reference fields within a descriptor. +They are only valid at compile time and are not passed +through to the AML interpreter. + +Resource descriptor named fields are now typed as Integers +and subject to compile-time typechecking when used in +expressions. + + ------------------------------------------ +Summary of changes for this label: 05_18_01 + + ACPI CA Core Subsystem: + +Fixed a couple of problems in the Field support code where +bits from adjacent fields could be returned along with the +proper field bits. Restructured the field support code to +improve performance, readability and maintainability. + +New DEBUG_PRINTP macro automatically inserts the procedure +name into the output, saving hundreds of copies of procedure +name strings within the source, shrinking the memory +footprint of the debug version of the core subsystem. + + Source Code Structure: + +The source code directory tree was restructured to reflect +the current organization of the component architecture. +Some files and directories have been moved and/or renamed. + + Linux: + +Fixed leaking kacpidpc processes. + +Fixed queueing event data even when /proc/acpi/event is not +opened. + + ASL Compiler, version X2020: + +Memory allocation performance enhancement - over 24X compile +time improvement on large ASL files. Parse nodes and +namestring buffers are now allocated from a large internal +compiler buffer. + +The temporary .SRC file is deleted unless the "-s" option is +specified + +The "-d" debug output option now sends all output to the +.DBG file instead of the console. + +"External" second parameter is now optional + +"ElseIf" syntax now properly allows the predicate + +Last operand to "Load" now recognized as a Target operand + +Debug object can now be used anywhere as a normal object. + +ResourceTemplate now returns an object of type BUFFER + +EISAID now returns an object of type INTEGER + +"Index" now works with a STRING operand + +"LoadTable" now accepts optional parameters + +"ToString" length parameter is now optional + +"Interrupt (ResourceType," parse error fixed. + +"Register" with a user-defined region space parse error +fixed + +Escaped backslash at the end of a string ("\\") scan/parse +error fixed + +"Revision" is now an object of type INTEGER. + + + +------------------------------------------ +Summary of changes for this label: 05_02_01 + +Linux: + +/proc/acpi/event now blocks properly. + +Removed /proc/sys/acpi. You can still dump your DSDT from +/proc/acpi/dsdt. + + ACPI CA Core Subsystem: + +Fixed a problem introduced in the previous label where some +of the "small" resource descriptor types were not +recognized. + +Improved error messages for the case where an ASL Field is +outside the range of the parent operation region. + + ASL Compiler, version X2018: + +Added error detection for ASL Fields that extend beyond the +length of the parent operation region (only if the length of +the region is known at compile time.) This includes fields +that have a minimum access width that is smaller than the +parent region, and individual field units that are partially +or entirely beyond the extent of the parent. + + + +------------------------------------------ +Summary of changes for this label: 04_27_01 + + ACPI CA Core Subsystem: + +Fixed a problem where the namespace mutex could be released +at the wrong time during execution of +AcpiRemoveAddressSpaceHandler. + +Added optional thread ID output for debug traces, to +simplify debugging of multiple threads. Added context +switch notification when the debug code realizes that a +different thread is now executing ACPI code. + +Some additional external data types have been prefixed with +the string "ACPI_" for consistency. This may effect +existing code. The data types affected are the external +callback typedefs - e.g., WALK_CALLBACK becomes +ACPI_WALK_CALLBACK. + + Linux: + +Fixed an issue with the OSL semaphore implementation where a +thread was waking up with an error from receiving a SIGCHLD +signal. + +Linux version of ACPI CA now uses the system C library for +string manipulation routines instead of a local +implementation. + +Cleaned up comments and removed TBDs. + + ASL Compiler, version X2017: + +Enhanced error detection and reporting for all file I/O +operations. + + Documentation: + +Programmer Reference updated to version 1.06. + + + +------------------------------------------ +Summary of changes for this label: 04_13_01 + + ACPI CA Core Subsystem: + +Restructured support for BufferFields and RegionFields. +BankFields support is now fully operational. All known 32- +bit limitations on field sizes have been removed. Both +BufferFields and (Operation) RegionFields are now supported +by the same field management code. + +Resource support now supports QWORD address and IO +resources. The 16/32/64 bit address structures and the +Extended IRQ structure have been changed to properly handle +Source Resource strings. + +A ThreadId of -1 is now used to indicate a "mutex not +acquired" condition internally and must never be returned by +AcpiOsThreadId. This reserved value was changed from 0 since +Unix systems allow a thread ID of 0. + +Linux: + +Driver code reorganized to enhance portability + +Added a kernel configuration option to control ACPI_DEBUG + +Fixed the EC driver to honor _GLK. + +ASL Compiler, version X2016: + +Fixed support for the "FixedHw" keyword. Previously, the +FixedHw address space was set to 0, not 0x7f as it should +be. + + ------------------------------------------ +Summary of changes for this label: 03_13_01 + + ACPI CA Core Subsystem: + +During ACPI initialization, the _SB_._INI method is now run +if present. + +Notify handler fix - notifies are deferred until the parent +method completes execution. This fixes the "mutex already +acquired" issue seen occasionally. + +Part of the "implicit conversion" rules in ACPI 2.0 have +been found to cause compatibility problems with existing +ASL/AML. The convert "result-to-target-type" implementation +has been removed for stores to method Args and Locals. +Source operand conversion is still fully implemented. +Possible changes to ACPI 2.0 specification pending. + +Fix to AcpiRsCalculatePciRoutingTableLength to return +correct length. + +Fix for compiler warnings for 64-bit compiles. + + Linux: + +/proc output aligned for easier parsing. + +Release-version compile problem fixed. + +New kernel configuration options documented in +Configure.help. + +IBM 600E - Fixed Sleep button may generate "Invalid <NULL> +context" message. + + OSPM: + +Power resource driver integrated with bus manager. + +Fixed kernel fault during active cooling for thermal zones. + +Source Code: + +The source code tree has been restructured. + + + +------------------------------------------ +Summary of changes for this label: 03_02_01 + + Linux OS Services Layer (OSL): + +Major revision of all Linux-specific code. + +Modularized all ACPI-specific drivers. + +Added new thermal zone and power resource drivers. + +Revamped /proc interface (new functionality is under +/proc/acpi). + +New kernel configuration options. + + Linux known issues: + +New kernel configuration options not documented in +Configure.help yet. + +Module dependencies not currently implemented. If used, they +should be loaded in this order: busmgr, power, ec, system, +processor, battery, ac_adapter, button, thermal. + +Modules will not load if CONFIG_MODVERSION is set. + +IBM 600E - entering S5 may reboot instead of shutting down. + +IBM 600E - Sleep button may generate "Invalid <NULL> +context" message. + +Some systems may fail with "execution mutex already +acquired" message. + + ACPI CA Core Subsystem: + +Added a new OSL Interface, AcpiOsGetThreadId. This was +required for the deadlock detection code. Defined to return +a non-zero, 32-bit thread ID for the currently executing +thread. May be a non-zero constant integer on single-thread +systems. + +Implemented deadlock detection for internal subsystem +mutexes. We may add conditional compilation for this code +(debug only) later. + +ASL/AML Mutex object semantics are now fully supported. +This includes multiple acquires/releases by owner and +support for the Mutex SyncLevel parameter. + +A new "Force Release" mechanism automatically frees all ASL +Mutexes that have been acquired but not released when a +thread exits the interpreter. This forces conformance to +the ACPI spec ("All mutexes must be released when an +invocation exits") and prevents deadlocked ASL threads. +This mechanism can be expanded (later) to monitor other +resource acquisitions if OEM ASL code continues to misbehave +(which it will). + +Several new ACPI exception codes have been added for the +Mutex support. + +Recursive method calls are now allowed and supported (the +ACPI spec does in fact allow recursive method calls.) The +number of recursive calls is subject to the restrictions +imposed by the SERIALIZED method keyword and SyncLevel (ACPI +2.0) method parameter. + +Implemented support for the SyncLevel parameter for control +methods (ACPI 2.0 feature) + +Fixed a deadlock problem when multiple threads attempted to +use the interpreter. + +Fixed a problem where the string length of a String package +element was not always set in a package returned from +AcpiEvaluateObject. + +Fixed a problem where the length of a String package element +was not always included in the length of the overall package +returned from AcpiEvaluateObject. + +Added external interfaces (Acpi*) to the ACPI debug memory +manager. This manager keeps a list of all outstanding +allocations, and can therefore detect memory leaks and +attempts to free memory blocks more than once. Useful for +code such as the power manager, etc. May not be appropriate +for device drivers. Performance with the debug code enabled +is slow. + +The ACPI Global Lock is now an optional hardware element. + + ASL Compiler Version X2015: + +Integrated changes to allow the compiler to be generated on +multiple platforms. + +Linux makefile added to generate the compiler on Linux + + Source Code: + +All platform-specific headers have been moved to their own +subdirectory, Include/Platform. + +New source file added, Interpreter/ammutex.c + +New header file, Include/acstruct.h + + Documentation: + +The programmer reference has been updated for the following +new interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate +AcpiFree + + ------------------------------------------ +Summary of changes for this label: 02_08_01 + +Core ACPI CA Subsystem: Fixed a problem where an error was +incorrectly returned if the return resource buffer was +larger than the actual data (in the resource interfaces). + +References to named objects within packages are resolved to +the full pathname string before packages are returned +directly (via the AcpiEvaluateObject interface) or +indirectly via the resource interfaces. + +Linux OS Services Layer (OSL): + +Improved /proc battery interface. + + +Added C-state debugging output and other miscellaneous +fixes. + +ASL Compiler Version X2014: + +All defined method arguments can now be used as local +variables, including the ones that are not actually passed +in as parameters. The compiler tracks initialization of the +arguments and issues an exception if they are used without +prior assignment (just like locals). + +The -o option now specifies a filename prefix that is used +for all output files, including the AML output file. +Otherwise, the default behavior is as follows: 1) the AML +goes to the file specified in the DSDT. 2) all other output +files use the input source filename as the base. + + ------------------------------------------ +Summary of changes for this label: 01_25_01 + +Core ACPI CA Subsystem: Restructured the implementation of +object store support within the interpreter. This includes +support for the Store operator as well as any ASL operators +that include a target operand. + +Partially implemented support for Implicit Result-to-Target +conversion. This is when a result object is converted on the +fly to the type of an existing target object. Completion +of this support is pending further analysis of the ACPI +specification concerning this matter. + +CPU-specific code has been removed from the subsystem +(hardware directory). + +New Power Management Timer functions added + +Linux OS Services Layer (OSL): Moved system state transition +code to the core, fixed it, and modified Linux OSL +accordingly. + +Fixed C2 and C3 latency calculations. + + +We no longer use the compilation date for the version +message on initialization, but retrieve the version from +AcpiGetSystemInfo(). + +Incorporated for fix Sony VAIO machines. + +Documentation: The Programmer Reference has been updated +and reformatted. + + +ASL Compiler: Version X2013: Fixed a problem where the line +numbering and error reporting could get out of sync in the +presence of multiple include files. + + ------------------------------------------ +Summary of changes for this label: 01_15_01 + +Core ACPI CA Subsystem: + +Implemented support for type conversions in the execution of +the ASL Concatenate operator (The second operand is +converted to match the type of the first operand before +concatenation.) + +Support for implicit source operand conversion is partially +implemented. The ASL source operand types Integer, Buffer, +and String are freely interchangeable for most ASL +operators and are converted by the interpreter on the fly +as required. Implicit Target operand conversion (where the +result is converted to the target type before storing) is +not yet implemented. + +Support for 32-bit and 64-bit BCD integers is implemented. + +Problem fixed where a field read on an aligned field could +cause a read past the end of the field. + +New exception, AE_AML_NO_RETURN_VALUE, is returned when a +method does not return a value, but the caller expects one. +(The ASL compiler flags this as a warning.) + +ASL Compiler: + +Version X2011: +1. Static typechecking of all operands is implemented. This +prevents the use of invalid objects (such as using a Package +where an Integer is required) at compile time instead of at +interpreter run-time. +2. The ASL source line is printed with ALL errors and +warnings. +3. Bug fix for source EOF without final linefeed. +4. Debug option is split into a parse trace and a namespace +trace. +5. Namespace output option (-n) includes initial values for +integers and strings. +6. Parse-only option added for quick syntax checking. +7. Compiler checks for duplicate ACPI name declarations + +Version X2012: +1. Relaxed typechecking to allow interchangeability between +strings, integers, and buffers. These types are now +converted by the interpreter at runtime. +2. Compiler reports time taken by each internal subsystem in +the debug output file. + + + ------------------------------------------ +Summary of changes for this label: 12_14_00 + +ASL Compiler: + +This is the first official release of the compiler. Since +the compiler requires elements of the Core Subsystem, this +label synchronizes everything. + +------------------------------------------ +Summary of changes for this label: 12_08_00 + +Fixed a problem where named references within the ASL +definition of both OperationRegions and CreateXXXFields did +not work properly. The symptom was an AE_AML_OPERAND_TYPE +during initialization of the region/field. This is similar +(but not related internally) to the problem that was fixed +in the last label. + +Implemented both 32-bit and 64-bit support for the BCD ASL +functions ToBCD and FromBCD. + +Updated all legal headers to include "2000" in the copyright +years. + + ------------------------------------------ +Summary of changes for this label: 12_01_00 + +Fixed a problem where method invocations within the ASL +definition of both OperationRegions and CreateXXXFields did +not work properly. The symptom was an AE_AML_OPERAND_TYPE +during initialization of the region/field: + + nsinit-0209: AE_AML_OPERAND_TYPE while getting region +arguments [DEBG] ammonad-0284: Exec_monadic2_r/Not: bad +operand(s) (0x3005) + +Fixed a problem where operators with more than one nested +subexpression would fail. The symptoms were varied, by +mostly AE_AML_OPERAND_TYPE errors. This was actually a +rather serious problem that has gone unnoticed until now. + + Subtract (Add (1,2), Multiply (3,4)) + +Fixed a problem where AcpiGetHandle didn't quite get fixed +in the previous build (The prefix part of a relative path +was handled incorrectly). + +Fixed a problem where Operation Region initialization failed +if the operation region name was a "namepath" instead of a +simple "nameseg". Symptom was an AE_NO_OPERAND error. + +Fixed a problem where an assignment to a local variable via +the indirect RefOf mechanism only worked for the first such +assignment. Subsequent assignments were ignored. + + ------------------------------------------ +Summary of changes for this label: 11_15_00 + +ACPI 2.0 table support with backwards support for ACPI 1.0 +and the 0.71 extensions. Note: although we can read ACPI +2.0 BIOS tables, the AML interpreter does NOT have support +for the new 2.0 ASL grammar terms at this time. + +All ACPI hardware access is via the GAS structures in the +ACPI 2.0 FADT. + +All physical memory addresses across all platforms are now +64 bits wide. Logical address width remains dependent on the +platform (i.e., "void *"). + +AcpiOsMapMemory interface changed to a 64-bit physical +address. + +The AML interpreter integer size is now 64 bits, as per the +ACPI 2.0 specification. + +For backwards compatibility with ACPI 1.0, ACPI tables with +a revision number less than 2 use 32-bit integers only. + +Fixed a problem where the evaluation of OpRegion operands +did not always resolve them to numbers properly. + +------------------------------------------ +Summary of changes for this label: 10_20_00 + +Fix for CBN_._STA issue. This fix will allow correct access +to CBN_ OpRegions when the _STA returns 0x8. + +Support to convert ACPI constants (Ones, Zeros, One) to +actual values before a package object is returned + +Fix for method call as predicate to if/while construct +causing incorrect if/while behavior + +Fix for Else block package lengths sometimes calculated +wrong (if block > 63 bytes) + +Fix for Processor object length field, was always zero + +Table load abort if FACP sanity check fails + +Fix for problem with Scope(name) if name already exists + +Warning emitted if a named object referenced cannot be found +(resolved) during method execution. + + + + + +------------------------------------------ +Summary of changes for this label: 9_29_00 + +New table initialization interfaces: AcpiInitializeSubsystem +no longer has any parameters AcpiFindRootPointer - Find the +RSDP (if necessary) AcpiLoadTables (RSDP) - load all tables +found at RSDP->RSDT Obsolete Interfaces +AcpiLoadFirmwareTables - replaced by AcpiLoadTables + +Note: These interface changes require changes to all +existing OSDs + +The PCI_Config default address space handler is always +installed at the root namespace object. + +------------------------------------------- +Summary of changes for this label: 09_15_00 + +The new initialization architecture is implemented. New +interfaces are: AcpiInitializeSubsystem (replaces +AcpiInitialize) AcpiEnableSubsystem Obsolete Interfaces: +AcpiLoadNamespace (Namespace is automatically loaded when a +table is loaded) + +The ACPI_OPERAND_OBJECT has been optimized to shrink its +size from 52 bytes to 32 bytes. There is usually one of +these for every namespace object, so the memory savings is +significant. + +Implemented just-in-time evaluation of the CreateField +operators. + +Bug fixes for IA-64 support have been integrated. + +Additional code review comments have been implemented + +The so-called "third pass parse" has been replaced by a +final walk through the namespace to initialize all operation +regions (address spaces) and fields that have not yet been +initialized during the execution of the various _INI and REG +methods. + +New file - namespace/nsinit.c + +------------------------------------------- +Summary of changes for this label: 09_01_00 + +Namespace manager data structures have been reworked to +change the primary object from a table to a single object. +This has resulted in dynamic memory savings of 3X within +the namespace and 2X overall in the ACPI CA subsystem. + +Fixed problem where the call to AcpiEvFindPciRootBuses was +inadvertently left commented out. + +Reduced the warning count when generating the source with +the GCC compiler. + +Revision numbers added to each module header showing the +SourceSafe version of the file. Please refer to this +version number when giving us feedback or comments on +individual modules. + +The main object types within the subsystem have been renamed +to clarify their purpose: + +ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT +ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT +ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE + +NOTE: no changes to the initialization sequence are included +in this label. + +------------------------------------------- +Summary of changes for this label: 08_23_00 + +Fixed problem where TerminateControlMethod was being called +multiple times per method + +Fixed debugger problem where single stepping caused a +semaphore to be oversignalled + +Improved performance through additional parse object caching +- added ACPI_EXTENDED_OP type + +------------------------------------------- +Summary of changes for this label: 08_10_00 + +Parser/Interpreter integration: Eliminated the creation of +complete parse trees for ACPI tables and control methods. +Instead, parse subtrees are created and then deleted as +soon as they are processed (Either entered into the +namespace or executed by the interpreter). This reduces +the use of dynamic kernel memory significantly. (about 10X) + +Exception codes broken into classes and renumbered. Be sure +to recompile all code that includes acexcep.h. Hopefully +we won't have to renumber the codes again now that they are +split into classes (environment, programmer, AML code, ACPI +table, and internal). + +Fixed some additional alignment issues in the Resource +Manager subcomponent + +Implemented semaphore tracking in the AcpiExec utility, and +fixed several places where mutexes/semaphores were being +unlocked without a corresponding lock operation. There are +no known semaphore or mutex "leaks" at this time. + +Fixed the case where an ASL Return operator is used to +return an unnamed package. + +------------------------------------------- +Summary of changes for this label: 07_28_00 + +Fixed a problem with the way addresses were calculated in +AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This +problem manifested itself when a Field was created with +WordAccess or DwordAccess, but the field unit defined within +the Field was less than a Word or Dword. + +Fixed a problem in AmlDumpOperands() module's loop to pull +operands off of the operand stack to display information. +The problem manifested itself as a TLB error on 64-bit +systems when accessing an operand stack with two or more +operands. + +Fixed a problem with the PCI configuration space handlers +where context was getting confused between accesses. This +required a change to the generic address space handler and +address space setup definitions. Handlers now get both a +global handler context (this is the one passed in by the +user when executing AcpiInstallAddressSpaceHandler() and a +specific region context that is unique to each region (For +example, the _ADR, _SEG and _BBN values associated with a +specific region). The generic function definitions have +changed to the following: + +typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 +Function, UINT32 Address, UINT32 BitWidth, UINT32 *Value, +void *HandlerContext, // This used to be void *Context void +*RegionContext); // This is an additional parameter + +typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE +RegionHandle, UINT32 Function, void *HandlerContext, void +**RegionContext); // This used to be **ReturnContext + +------------------------------------------- +Summary of changes for this label: 07_21_00 + +Major file consolidation and rename. All files within the +interpreter have been renamed as well as most header files. +This was done to prevent collisions with existing files in +the host OSs -- filenames such as "config.h" and "global.h" +seem to be quite common. The VC project files have been +updated. All makefiles will require modification. + +The parser/interpreter integration continues in Phase 5 with +the implementation of a complete 2-pass parse (the AML is +parsed twice) for each table; This avoids the construction +of a huge parse tree and therefore reduces the amount of +dynamic memory required by the subsystem. Greater use of +the parse object cache means that performance is +unaffected. + +Many comments from the two code reviews have been rolled in. + +The 64-bit alignment support is complete. + +------------------------------------------- +Summary of changes for this label: 06_30_00 + +With a nod and a tip of the hat to the technology of +yesteryear, we've added support in the source code for 80 +column output devices. The code is now mostly constrained +to 80 columns or less to support environments and editors +that 1) cannot display or print more than 80 characters on +a single line, and 2) cannot disable line wrapping. + +A major restructuring of the namespace data structure has +been completed. The result is 1) cleaner and more +understandable/maintainable code, and 2) a significant +reduction in the dynamic memory requirement for each named +ACPI object (almost half). + +------------------------------------------- +Summary of changes for this label: 06_23_00 + +Linux support has been added. In order to obtain approval +to get the ACPI CA subsystem into the Linux kernel, we've +had to make quite a few changes to the base subsystem that +will affect all users (all the changes are generic and OS- +independent). The effects of these global changes have been +somewhat far reaching. Files have been merged and/or +renamed and interfaces have been renamed. The major +changes are described below. + +Osd* interfaces renamed to AcpiOs* to eliminate namespace +pollution/confusion within our target kernels. All OSD +interfaces must be modified to match the new naming +convention. + +Files merged across the subsystem. A number of the smaller +source and header files have been merged to reduce the file +count and increase the density of the existing files. +There are too many to list here. In general, makefiles that +call out individual files will require rebuilding. + +Interpreter files renamed. All interpreter files now have +the prefix am* instead of ie* and is*. + +Header files renamed: The acapi.h file is now acpixf.h. +The acpiosd.h file is now acpiosxf.h. We are removing +references to the acronym "API" since it is somewhat +windowsy. The new name is "external interface" or xface or +xf in the filenames.j + + +All manifest constants have been forced to upper case (some +were mixed case.) Also, the string "ACPI_" has been +prepended to many (not all) of the constants, typedefs, and +structs. + +The globals "DebugLevel" and "DebugLayer" have been renamed +"AcpiDbgLevel" and "AcpiDbgLayer" respectively. + +All other globals within the subsystem are now prefixed with +"AcpiGbl_" Internal procedures within the subsystem are now +prefixed with "Acpi" (with only a few exceptions). The +original two-letter abbreviation for the subcomponent +remains after "Acpi" - for example, CmCallocate became +AcpiCmCallocate. + +Added a source code translation/conversion utility. Used to +generate the Linux source code, it can be modified to +generate other types of source as well. Can also be used to +cleanup existing source by removing extraneous spaces and +blank lines. Found in tools/acpisrc/* + +OsdUnMapMemory was renamed to OsdUnmapMemory and then +AcpiOsUnmapMemory. (UnMap became Unmap). + +A "MaxUnits" parameter has been added to +AcpiOsCreateSemaphore. When set to one, this indicates +that the caller wants to use the semaphore as a mutex, not a +counting semaphore. ACPI CA uses both types. However, +implementers of this call may want to use different OS +primitives depending on the type of semaphore requested. +For example, some operating systems provide separate "mutex" +and "semaphore" interfaces - where the mutex interface is +much faster because it doesn't have all the overhead of a +full semaphore implementation. + +Fixed a deadlock problem where a method that accesses the +PCI address space can block forever if it is the first +access to the space. + +------------------------------------------- +Summary of changes for this label: 06_02_00 + +Support for environments that cannot handle unaligned data +accesses (e.g. firmware and OS environments devoid of +alignment handler technology namely SAL/EFI and the IA-64 +Linux kernel) has been added (via configurable macros) in +these three areas: - Transfer of data from the raw AML byte +stream is done via byte moves instead of word/dword/qword +moves. - External objects are aligned within the user +buffer, including package elements (sub-objects). - +Conversion of name strings to UINT32 Acpi Names is now done +byte-wise. + +The Store operator was modified to mimic Microsoft's +implementation when storing to a Buffer Field. + +Added a check of the BM_STS bit before entering C3. + +The methods subdirectory has been obsoleted and removed. A +new file, cmeval.c subsumes the functionality. + +A 16-bit (DOS) version of AcpiExec has been developed. The +makefile is under the acpiexec directory. diff --git a/sys/contrib/dev/acpica/acapps.h b/sys/contrib/dev/acpica/acapps.h new file mode 100644 index 0000000..7dd9b48 --- /dev/null +++ b/sys/contrib/dev/acpica/acapps.h @@ -0,0 +1,181 @@ +/****************************************************************************** + * + * Module Name: acapps - common include for ACPI applications/tools + * + *****************************************************************************/ + +/****************************************************************************** + * + * 1. Copyright Notice + * + * Some or all of this work - Copyright (c) 1999 - 2002, Intel Corp. + * All rights reserved. + * + * 2. License + * + * 2.1. This is your license from Intel Corp. under its intellectual property + * rights. You may have additional license terms from the party that provided + * you this software, covering your right to use that party's intellectual + * property rights. + * + * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a + * copy of the source code appearing in this file ("Covered Code") an + * irrevocable, perpetual, worldwide license under Intel's copyrights in the + * base code distributed originally by Intel ("Original Intel Code") to copy, + * make derivatives, distribute, use and display any portion of the Covered + * Code in any form, with the right to sublicense such rights; and + * + * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent + * license (with the right to sublicense), under only those claims of Intel + * patents that are infringed by the Original Intel Code, to make, use, sell, + * offer to sell, and import the Covered Code and derivative works thereof + * solely to the minimum extent necessary to exercise the above copyright + * license, and in no event shall the patent license extend to any additions + * to or modifications of the Original Intel Code. No other license or right + * is granted directly or by implication, estoppel or otherwise; + * + * The above copyright and patent license is granted only if the following + * conditions are met: + * + * 3. Conditions + * + * 3.1. Redistribution of Source with Rights to Further Distribute Source. + * Redistribution of source code of any substantial portion of the Covered + * Code or modification with rights to further distribute source must include + * the above Copyright Notice, the above License, this list of Conditions, + * and the following Disclaimer and Export Compliance provision. In addition, + * Licensee must cause all Covered Code to which Licensee contributes to + * contain a file documenting the changes Licensee made to create that Covered + * Code and the date of any change. Licensee must include in that file the + * documentation of any changes made by any predecessor Licensee. Licensee + * must include a prominent statement that the modification is derived, + * directly or indirectly, from Original Intel Code. + * + * 3.2. Redistribution of Source with no Rights to Further Distribute Source. + * Redistribution of source code of any substantial portion of the Covered + * Code or modification without rights to further distribute source must + * include the following Disclaimer and Export Compliance provision in the + * documentation and/or other materials provided with distribution. In + * addition, Licensee may not authorize further sublicense of source of any + * portion of the Covered Code, and must include terms to the effect that the + * license from Licensee to its licensee is limited to the intellectual + * property embodied in the software Licensee provides to its licensee, and + * not to intellectual property embodied in modifications its licensee may + * make. + * + * 3.3. Redistribution of Executable. Redistribution in executable form of any + * substantial portion of the Covered Code or modification must reproduce the + * above Copyright Notice, and the following Disclaimer and Export Compliance + * provision in the documentation and/or other materials provided with the + * distribution. + * + * 3.4. Intel retains all right, title, and interest in and to the Original + * Intel Code. + * + * 3.5. Neither the name Intel nor any other trademark owned or controlled by + * Intel shall be used in advertising or otherwise to promote the sale, use or + * other dealings in products derived from or relating to the Covered Code + * without prior written authorization from Intel. + * + * 4. Disclaimer and Export Compliance + * + * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED + * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE + * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, + * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY + * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY + * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A + * PARTICULAR PURPOSE. + * + * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES + * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR + * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, + * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY + * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL + * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS + * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY + * LIMITED REMEDY. + * + * 4.3. Licensee shall not export, either directly or indirectly, any of this + * software or system incorporating such software without first obtaining any + * required license or other approval from the U. S. Department of Commerce or + * any other agency or department of the United States Government. In the + * event Licensee exports any such software from the United States or + * re-exports any such software from a foreign destination, Licensee shall + * ensure that the distribution and export/re-export of the software is in + * compliance with all laws, regulations, orders, or other restrictions of the + * U.S. Export Administration Regulations. Licensee agrees that neither it nor + * any of its subsidiaries will export/re-export any technical data, process, + * software, or service, directly or indirectly, to any country for which the + * United States government or any agency thereof requires an export license, + * other governmental approval, or letter of assurance, without first obtaining + * such license, approval or letter. + * + *****************************************************************************/ + +#ifndef _ACAPPS +#define _ACAPPS + + +#ifdef _MSC_VER /* disable some level-4 warnings */ +#pragma warning(disable:4100) /* warning C4100: unreferenced formal parameter */ +#endif + +extern UINT8 *DsdtPtr; +extern UINT32 AcpiDsdtLength; +extern UINT8 *AmlStart; +extern UINT32 AmlLength; + + +extern int AcpiGbl_Optind; +extern NATIVE_CHAR *AcpiGbl_Optarg; + +int +AcpiGetopt( + int argc, + char **argv, + char *opts); + +ACPI_STATUS +AdInitialize ( + void); + +char * +FlGenerateFilename ( + char *InputFilename, + char *Suffix); + +ACPI_STATUS +AdAmlDisassemble ( + BOOLEAN OutToFile, + char *Filename, + char **OutFilename); + +void +AdPrintStatistics (void); + +ACPI_STATUS +AdFindDsdt( + UINT8 **DsdtPtr, + UINT32 *DsdtLength); + +void +AdDumpTables (void); + +ACPI_STATUS +AdGetTables ( + char *Filename); + +ACPI_STATUS +AdParseTables (void); + +ACPI_STATUS +AdDisplayTables ( + char *Filename); + +ACPI_STATUS +AdDisplayStatistics (void); + + +#endif /* _ACAPPS */ + diff --git a/sys/contrib/dev/acpica/acconfig.h b/sys/contrib/dev/acpica/acconfig.h index c08b5f8..7968a63 100644 --- a/sys/contrib/dev/acpica/acconfig.h +++ b/sys/contrib/dev/acpica/acconfig.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acconfig.h - Global configuration constants - * $Revision: 107 $ + * $Revision: 109 $ * *****************************************************************************/ @@ -125,7 +125,7 @@ *****************************************************************************/ /* - * ACPI_DEBUG - This switch enables all the debug facilities of the + * ACPI_DEBUG_OUTPUT - This switch enables all the debug facilities of the * ACPI subsystem. This includes the DEBUG_PRINT output * statements. When disabled, all DEBUG_PRINT * statements are compiled out. @@ -145,7 +145,7 @@ /* Version string */ -#define ACPI_CA_VERSION 0x20020725 +#define ACPI_CA_VERSION 0x20020815 /* Version of ACPI supported */ diff --git a/sys/contrib/dev/acpica/acdisasm.h b/sys/contrib/dev/acpica/acdisasm.h index 9cad736..00401d2 100644 --- a/sys/contrib/dev/acpica/acdisasm.h +++ b/sys/contrib/dev/acpica/acdisasm.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acdisasm.h - AML disassembler - * $Revision: 2 $ + * $Revision: 3 $ * *****************************************************************************/ @@ -161,7 +161,6 @@ ACPI_STATUS (*ASL_WALK_CALLBACK) ( void *Context); - /* * dmwalk */ @@ -224,7 +223,7 @@ AcpiDmDisplayPath ( void AcpiDmDisassembleOneOp ( ACPI_WALK_STATE *WalkState, - ACPI_OP_WALK_INFO *Info, + ACPI_OP_WALK_INFO *Info, ACPI_PARSE_OBJECT *Op); void @@ -276,12 +275,12 @@ BOOLEAN AcpiDmCommaIfListMember ( ACPI_PARSE_OBJECT *Op); -void +void AcpiDmCommaIfFieldMember ( ACPI_PARSE_OBJECT *Op); -/* +/* * dmbuffer */ @@ -314,12 +313,12 @@ AcpiDmDisasmByteList ( void AcpiDmByteList ( - ACPI_OP_WALK_INFO *Info, + ACPI_OP_WALK_INFO *Info, ACPI_PARSE_OBJECT *Op); void AcpiDmResourceDescriptor ( - ACPI_OP_WALK_INFO *Info, + ACPI_OP_WALK_INFO *Info, UINT8 *ByteData, UINT32 ByteCount); diff --git a/sys/contrib/dev/acpica/acefi.h b/sys/contrib/dev/acpica/acefi.h index f8db82d..4c39ef7 100644 --- a/sys/contrib/dev/acpica/acefi.h +++ b/sys/contrib/dev/acpica/acefi.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acefi.h - OS specific defines, etc. - * $Revision: 10 $ + * $Revision: 12 $ * *****************************************************************************/ @@ -133,7 +133,7 @@ * Calling conventions: * * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) - * ACPI_EXTERNAL_XFACE - External ACPI interfaces + * ACPI_EXTERNAL_XFACE - External ACPI interfaces * ACPI_INTERNAL_XFACE - Internal ACPI interfaces * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces */ diff --git a/sys/contrib/dev/acpica/acenv.h b/sys/contrib/dev/acpica/acenv.h index 9c4cfdd..0a1a407 100644 --- a/sys/contrib/dev/acpica/acenv.h +++ b/sys/contrib/dev/acpica/acenv.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acenv.h - Generation environment specific items - * $Revision: 99 $ + * $Revision: 101 $ * *****************************************************************************/ @@ -124,7 +124,7 @@ #ifdef _ACPI_DUMP_APP #ifndef MSDOS -#define ACPI_DEBUG +#define ACPI_DEBUG_OUTPUT #endif #define ACPI_APPLICATION #define ACPI_DISASSEMBLER @@ -135,15 +135,15 @@ #ifdef _ACPI_EXEC_APP #undef DEBUGGER_THREADING #define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED -#define ACPI_DEBUG +#define ACPI_DEBUG_OUTPUT #define ACPI_APPLICATION -#define ENABLE_DEBUGGER +#define ACPI_DEBUGGER #define ACPI_DISASSEMBLER #define ACPI_USE_SYSTEM_CLIBRARY #endif #ifdef _ACPI_ASL_COMPILER -#define ACPI_DEBUG +#define ACPI_DEBUG_OUTPUT #define ACPI_APPLICATION #define ACPI_DISASSEMBLER #define ACPI_CONSTANT_EVAL_ONLY @@ -240,7 +240,7 @@ * 1) This is the debug version * 2) This is NOT a 16-bit version of the code (not enough real-mode memory) */ -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT #if ACPI_MACHINE_WIDTH != 16 #define ACPI_DBG_TRACK_ALLOCATIONS #endif @@ -399,7 +399,7 @@ typedef char *va_list; * Calling conventions: * * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) - * ACPI_EXTERNAL_XFACE - External ACPI interfaces + * ACPI_EXTERNAL_XFACE - External ACPI interfaces * ACPI_INTERNAL_XFACE - Internal ACPI interfaces * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces */ diff --git a/sys/contrib/dev/acpica/acfreebsd.h b/sys/contrib/dev/acpica/acfreebsd.h index 2154882..2f513c7 100644 --- a/sys/contrib/dev/acpica/acfreebsd.h +++ b/sys/contrib/dev/acpica/acfreebsd.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acfreebsd.h - OS specific defines, etc. - * $Revision: 9 $ + * $Revision: 10 $ * *****************************************************************************/ @@ -139,16 +139,16 @@ #define __cli() disable_intr() #define __sti() enable_intr() -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT #ifdef DEBUGGER_THREADING #undef DEBUGGER_THREADING #endif /* DEBUGGER_THREADING */ #define DEBUGGER_THREADING 0 /* integrated with DDB */ #include "opt_ddb.h" #ifdef DDB -#define ENABLE_DEBUGGER +#define ACPI_DEBUGGER #endif /* DDB */ -#endif /* ACPI_DEBUG */ +#endif /* ACPI_DEBUG_OUTPUT */ #else /* _KERNEL */ diff --git a/sys/contrib/dev/acpica/acglobal.h b/sys/contrib/dev/acpica/acglobal.h index d39861e..37d5c34 100644 --- a/sys/contrib/dev/acpica/acglobal.h +++ b/sys/contrib/dev/acpica/acglobal.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acglobal.h - Declarations for global variables - * $Revision: 128 $ + * $Revision: 130 $ * *****************************************************************************/ @@ -243,8 +243,12 @@ extern const NATIVE_CHAR *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_ ****************************************************************************/ #define NUM_NS_TYPES INTERNAL_TYPE_INVALID+1 -#define NUM_PREDEFINED_NAMES 9 +#if defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) +#define NUM_PREDEFINED_NAMES 10 +#else +#define NUM_PREDEFINED_NAMES 9 +#endif ACPI_EXTERN ACPI_NAMESPACE_NODE AcpiGbl_RootNodeStruct; ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_RootNode; @@ -252,7 +256,7 @@ ACPI_EXTERN ACPI_NAMESPACE_NODE *AcpiGbl_RootNode; extern const UINT8 AcpiGbl_NsProperties[NUM_NS_TYPES]; extern const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames [NUM_PREDEFINED_NAMES]; -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT ACPI_EXTERN UINT32 AcpiGbl_CurrentNodeCount; ACPI_EXTERN UINT32 AcpiGbl_CurrentNodeSize; ACPI_EXTERN UINT32 AcpiGbl_MaxConcurrentNodeCount; @@ -336,7 +340,7 @@ ACPI_EXTERN BOOLEAN AcpiGbl_DbOpt_verbose; #endif -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER extern BOOLEAN AcpiGbl_MethodExecuting; extern BOOLEAN AcpiGbl_DbTerminateThreads; @@ -378,7 +382,7 @@ ACPI_EXTERN UINT32 AcpiGbl_SizeOfMethodTrees; ACPI_EXTERN UINT32 AcpiGbl_SizeOfNodeEntries; ACPI_EXTERN UINT32 AcpiGbl_SizeOfAcpiObjects; -#endif /* ENABLE_DEBUGGER */ +#endif /* ACPI_DEBUGGER */ #endif /* __ACGLOBAL_H__ */ diff --git a/sys/contrib/dev/acpica/aclocal.h b/sys/contrib/dev/acpica/aclocal.h index f843123..ad86dc4 100644 --- a/sys/contrib/dev/acpica/aclocal.h +++ b/sys/contrib/dev/acpica/aclocal.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: aclocal.h - Internal data types used across the ACPI subsystem - * $Revision: 173 $ + * $Revision: 175 $ * *****************************************************************************/ @@ -129,7 +129,6 @@ typedef UINT32 ACPI_MUTEX_HANDLE; #define AML_NUM_OPCODES 0x7E - /***************************************************************************** * * Mutex typedefs and structs @@ -165,7 +164,7 @@ typedef UINT32 ACPI_MUTEX_HANDLE; #define NUM_MTX MAX_MTX+1 -#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) #ifdef DEFINE_ACPI_GLOBALS /* Names for the mutexes used in the subsystem */ @@ -659,7 +658,7 @@ ACPI_STATUS (*ACPI_EXECUTE_OP) ( */ typedef struct acpi_opcode_info { -#if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG) +#if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT) NATIVE_CHAR *Name; /* Opcode name (disassembler/debug only) */ #endif UINT32 ParseArgs; /* Grammar/Parse time arguments */ @@ -778,7 +777,6 @@ typedef union acpi_parse_obj } ACPI_PARSE_OBJECT; - /* * Parse state - one state per parser invocation and each control * method. diff --git a/sys/contrib/dev/acpica/acmacros.h b/sys/contrib/dev/acpica/acmacros.h index 1394c9c..8cfa916 100644 --- a/sys/contrib/dev/acpica/acmacros.h +++ b/sys/contrib/dev/acpica/acmacros.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acmacros.h - C macros for the entire subsystem. - * $Revision: 126 $ + * $Revision: 128 $ * *****************************************************************************/ @@ -182,7 +182,7 @@ #define ACPI_TO_POINTER(i) ACPI_PTR_ADD (void, (void *) NULL,(NATIVE_UINT)i) #define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p,(void *) NULL) -#define ACPI_OFFSET(d,f) (ACPI_SIZE) ACPI_PTR_DIFF (&(((d *)0)->f),(void *) NULL) +#define ACPI_OFFSET(d,f) (ACPI_SIZE) ACPI_PTR_DIFF (&(((d *)0)->f),(void *) NULL) #define ACPI_FADT_OFFSET(f) ACPI_OFFSET (FADT_DESCRIPTOR, f) #define ACPI_CAST_PTR(t, p) ((t *)(void *)(p)) @@ -378,7 +378,7 @@ /* * Macros for the master AML opcode table */ -#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUG) +#if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUG_OUTPUT) #define ACPI_OP(Name,PArgs,IArgs,ObjType,Class,Type,Flags) {Name,PArgs,IArgs,Flags,ObjType,Class,Type} #else #define ACPI_OP(Name,PArgs,IArgs,ObjType,Class,Type,Flags) {PArgs,IArgs,Flags,ObjType,Class,Type} @@ -444,11 +444,11 @@ /* * Error reporting. These versions add callers module and line#. Since - * _THIS_MODULE gets compiled out when ACPI_DEBUG isn't defined, only + * _THIS_MODULE gets compiled out when ACPI_DEBUG_OUTPUT isn't defined, only * use it in debug mode. */ -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT #define ACPI_REPORT_INFO(fp) {AcpiUtReportInfo(_THIS_MODULE,__LINE__,_COMPONENT); \ AcpiOsPrintf ACPI_PARAM_LIST(fp);} @@ -481,7 +481,7 @@ * Debug macros that are conditionally compiled */ -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT #define ACPI_MODULE_NAME(name) static char *_THIS_MODULE = name; @@ -616,9 +616,9 @@ /* * Some code only gets executed when the debugger is built in. * Note that this is entirely independent of whether the - * DEBUG_PRINT stuff (set by ACPI_DEBUG) is on, or not. + * DEBUG_PRINT stuff (set by ACPI_DEBUG_OUTPUT) is on, or not. */ -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER #define ACPI_DEBUGGER_EXEC(a) a #else #define ACPI_DEBUGGER_EXEC(a) @@ -627,7 +627,7 @@ /* * For 16-bit code, we want to shrink some things even though - * we are using ACPI_DEBUG to get the debug output + * we are using ACPI_DEBUG_OUTPUT to get the debug output */ #if ACPI_MACHINE_WIDTH == 16 #undef ACPI_DEBUG_ONLY_MEMBERS @@ -636,7 +636,7 @@ #endif -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT /* * 1) Set name to blanks * 2) Copy the object name diff --git a/sys/contrib/dev/acpica/acobject.h b/sys/contrib/dev/acpica/acobject.h index b5caeba..007e548 100644 --- a/sys/contrib/dev/acpica/acobject.h +++ b/sys/contrib/dev/acpica/acobject.h @@ -2,7 +2,7 @@ /****************************************************************************** * * Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only) - * $Revision: 112 $ + * $Revision: 113 $ * *****************************************************************************/ @@ -190,7 +190,6 @@ union acpi_operand_obj *AddrHandler; /* Handler for Address space */ - /****************************************************************************** * * Basic data types @@ -247,7 +246,6 @@ typedef struct AcpiObjectPackage } ACPI_OBJECT_PACKAGE; - /****************************************************************************** * * Complex data types @@ -311,7 +309,6 @@ typedef struct AcpiObjectRegion } ACPI_OBJECT_REGION; - /****************************************************************************** * * Objects that can be notified. All share a common NotifyInfo area. @@ -366,7 +363,6 @@ typedef struct AcpiObjectThermalZone } ACPI_OBJECT_THERMAL_ZONE; - /****************************************************************************** * * Fields. All share a common header/info field. @@ -430,7 +426,6 @@ typedef struct AcpiObjectBufferField } ACPI_OBJECT_BUFFER_FIELD; - /****************************************************************************** * * Objects for handlers @@ -470,7 +465,6 @@ typedef struct AcpiObjectAddrHandler } ACPI_OBJECT_ADDR_HANDLER; - /****************************************************************************** * * Special internal objects @@ -537,14 +531,13 @@ typedef struct AcpiObjectCacheList } ACPI_OBJECT_CACHE_LIST; - /****************************************************************************** * * ACPI_OPERAND_OBJECT Descriptor - a giant union of all of the above * *****************************************************************************/ -typedef union acpi_operand_obj +typedef union acpi_operand_obj { ACPI_OBJECT_COMMON Common; @@ -581,9 +574,6 @@ typedef union acpi_operand_obj } ACPI_OPERAND_OBJECT; - - - /****************************************************************************** * * ACPI_DESCRIPTOR - objects that share a common descriptor identifier @@ -610,7 +600,6 @@ typedef union acpi_operand_obj #define ACPI_DESC_TYPE_NAMED 0xAA - typedef union acpi_desc { UINT8 DescriptorId; /* To differentiate various internal objs */\ diff --git a/sys/contrib/dev/acpica/acoutput.h b/sys/contrib/dev/acpica/acoutput.h index 923cd5e..25e7e6f 100644 --- a/sys/contrib/dev/acpica/acoutput.h +++ b/sys/contrib/dev/acpica/acoutput.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acoutput.h -- debug output - * $Revision: 87 $ + * $Revision: 90 $ * *****************************************************************************/ @@ -134,18 +134,20 @@ #define ACPI_DISPATCHER 0x00000040 #define ACPI_EXECUTER 0x00000080 #define ACPI_RESOURCES 0x00000100 -#define ACPI_DEBUGGER 0x00000200 +#define ACPI_CA_DEBUGGER 0x00000200 #define ACPI_OS_SERVICES 0x00000400 - -#define ACPI_ALL_COMPONENTS 0x00000FFF - -#define ACPI_COMPONENT_DEFAULT (ACPI_ALL_COMPONENTS) +#define ACPI_CA_DISASSEMBLER 0x00000800 /* Component IDs for ACPI tools and utilities */ #define ACPI_COMPILER 0x00001000 #define ACPI_TOOLS 0x00002000 +#define ACPI_ALL_COMPONENTS 0x00003FFF + +#define ACPI_COMPONENT_DEFAULT (ACPI_ALL_COMPONENTS) + + /* Component IDs reserved for ACPI drivers */ #define ACPI_ALL_DRIVERS 0xFFFF0000 @@ -185,7 +187,8 @@ #define ACPI_LV_ALLOCATIONS 0x00100000 #define ACPI_LV_FUNCTIONS 0x00200000 -#define ACPI_LV_VERBOSITY2 0x00300000 | ACPI_LV_VERBOSITY1 +#define ACPI_LV_OPTIMIZATIONS 0x00400000 +#define ACPI_LV_VERBOSITY2 0x00700000 | ACPI_LV_VERBOSITY1 #define ACPI_LV_ALL ACPI_LV_VERBOSITY2 /* Trace verbosity level 3 [Threading, I/O, and Interrupts] */ @@ -235,6 +238,7 @@ #define ACPI_DB_BFIELD ACPI_DEBUG_LEVEL (ACPI_LV_BFIELD) #define ACPI_DB_TABLES ACPI_DEBUG_LEVEL (ACPI_LV_TABLES) #define ACPI_DB_FUNCTIONS ACPI_DEBUG_LEVEL (ACPI_LV_FUNCTIONS) +#define ACPI_DB_OPTIMIZATIONS ACPI_DEBUG_LEVEL (ACPI_LV_OPTIMIZATIONS) #define ACPI_DB_VALUES ACPI_DEBUG_LEVEL (ACPI_LV_VALUES) #define ACPI_DB_OBJECTS ACPI_DEBUG_LEVEL (ACPI_LV_OBJECTS) #define ACPI_DB_ALLOCATIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALLOCATIONS) @@ -249,7 +253,6 @@ #define ACPI_DB_ALL ACPI_DEBUG_LEVEL (ACPI_LV_ALL) - /* Defaults for DebugLevel, debug and normal */ #define DEBUG_DEFAULT (ACPI_LV_OK | ACPI_LV_WARN | ACPI_LV_ERROR | ACPI_LV_DEBUG_OBJECT) diff --git a/sys/contrib/dev/acpica/acparser.h b/sys/contrib/dev/acpica/acparser.h index 04b6a08..e51d9cb 100644 --- a/sys/contrib/dev/acpica/acparser.h +++ b/sys/contrib/dev/acpica/acparser.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: acparser.h - AML Parser subcomponent prototypes and defines - * $Revision: 60 $ + * $Revision: 61 $ * *****************************************************************************/ @@ -177,7 +177,7 @@ AcpiPsGetNextSimpleArg ( UINT32 ArgType, ACPI_PARSE_OBJECT *Arg); -void +ACPI_STATUS AcpiPsGetNextNamepath ( ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT *Arg, @@ -188,11 +188,12 @@ ACPI_PARSE_OBJECT * AcpiPsGetNextField ( ACPI_PARSE_STATE *ParserState); -ACPI_PARSE_OBJECT * +ACPI_STATUS AcpiPsGetNextArg ( ACPI_PARSE_STATE *ParserState, UINT32 ArgType, - UINT32 *ArgCount); + UINT32 *ArgCount, + ACPI_PARSE_OBJECT **ReturnArg); /* psfind */ diff --git a/sys/contrib/dev/acpica/acpiosxf.h b/sys/contrib/dev/acpica/acpiosxf.h index 9263d7e..2bd108c 100644 --- a/sys/contrib/dev/acpica/acpiosxf.h +++ b/sys/contrib/dev/acpica/acpiosxf.h @@ -154,11 +154,11 @@ typedef struct AcpiFatalInfo * Types specific to the OS service interfaces */ -typedef UINT32 +typedef UINT32 (ACPI_SYSTEM_XFACE *OSD_HANDLER) ( void *Context); -typedef void +typedef void (ACPI_SYSTEM_XFACE *OSD_EXECUTION_CALLBACK) ( void *Context); diff --git a/sys/contrib/dev/acpica/acresrc.h b/sys/contrib/dev/acpica/acresrc.h index 9f09766..cdd491f 100644 --- a/sys/contrib/dev/acpica/acresrc.h +++ b/sys/contrib/dev/acpica/acresrc.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acresrc.h - Resource Manager function prototypes - * $Revision: 33 $ + * $Revision: 34 $ * *****************************************************************************/ @@ -174,11 +174,11 @@ AcpiRsDumpAddress16 ( void AcpiRsDumpAddress32 ( ACPI_RESOURCE_DATA *Data); - + void AcpiRsDumpAddress64 ( ACPI_RESOURCE_DATA *Data); - + void AcpiRsDumpDma ( ACPI_RESOURCE_DATA *Data); @@ -186,7 +186,7 @@ AcpiRsDumpDma ( void AcpiRsDumpIo ( ACPI_RESOURCE_DATA *Data); - + void AcpiRsDumpExtendedIrq ( ACPI_RESOURCE_DATA *Data); diff --git a/sys/contrib/dev/acpica/acutils.h b/sys/contrib/dev/acpica/acutils.h index dbf40dc..689e864 100644 --- a/sys/contrib/dev/acpica/acutils.h +++ b/sys/contrib/dev/acpica/acutils.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures - * $Revision: 142 $ + * $Revision: 143 $ * *****************************************************************************/ @@ -185,7 +185,7 @@ AcpiUtValidateFadt ( * UtGlobal - Global data structures and procedures */ -#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) NATIVE_CHAR * AcpiUtGetMutexName ( @@ -777,7 +777,7 @@ void AcpiUtSetIntegerWidth ( UINT8 Revision); -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT void AcpiUtDisplayInitPathname ( ACPI_HANDLE ObjHandle, diff --git a/sys/contrib/dev/acpica/amlcode.h b/sys/contrib/dev/acpica/amlcode.h index d807c9a..093ab0f 100644 --- a/sys/contrib/dev/acpica/amlcode.h +++ b/sys/contrib/dev/acpica/amlcode.h @@ -3,7 +3,7 @@ * Name: amlcode.h - Definitions for AML, as included in "definition blocks" * Declarations and definitions contained herein are derived * directly from the ACPI specification. - * $Revision: 69 $ + * $Revision: 70 $ * *****************************************************************************/ @@ -565,5 +565,4 @@ typedef enum #define METHOD_FLAGS_SYNCH_LEVEL 0xF0 - #endif /* __AMLCODE_H__ */ diff --git a/sys/contrib/dev/acpica/amlresrc.h b/sys/contrib/dev/acpica/amlresrc.h index 6b4994b..815fafb 100644 --- a/sys/contrib/dev/acpica/amlresrc.h +++ b/sys/contrib/dev/acpica/amlresrc.h @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: amlresrc.h - AML resource descriptors - * $Revision: 20 $ + * $Revision: 22 $ * *****************************************************************************/ @@ -419,172 +419,5 @@ typedef union asl_resource_desc } ASL_RESOURCE_DESC; -#define NEXT_RESOURCE_DESC(a,b) (ASL_RESOURCE_DESC *) (((char *) (a)) + sizeof(b)) - -#define DEFAULT_RESOURCE_DESC_SIZE (sizeof (ASL_RESOURCE_DESC) + sizeof (ASL_END_TAG_DESC)) - - -/* - * Resource utilities - */ - -ASL_RESOURCE_NODE * -RsAllocateResourceNode ( - UINT32 Size); - - void -RsCreateBitField ( - ACPI_PARSE_OBJECT *Op, - char *Name, - UINT32 ByteOffset, - UINT32 BitOffset); - -void -RsCreateByteField ( - ACPI_PARSE_OBJECT *Op, - char *Name, - UINT32 ByteOffset); - -void -RsSetFlagBits ( - UINT8 *Flags, - ACPI_PARSE_OBJECT *Op, - UINT8 Position, - UINT8 Default); - -ACPI_PARSE_OBJECT * -RsCompleteNodeAndGetNext ( - ACPI_PARSE_OBJECT *Op); - -ASL_RESOURCE_NODE * -RsDoOneResourceDescriptor ( - ACPI_PARSE_OBJECT *DescriptorTypeOp, - UINT32 CurrentByteOffset); - -UINT32 -RsLinkDescriptorChain ( - ASL_RESOURCE_NODE **PreviousRnode, - ASL_RESOURCE_NODE *Rnode); - - -/* - * Small descriptors - */ - -ASL_RESOURCE_NODE * -RsDoDmaDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoEndDependentDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoFixedIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoInterruptDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoIrqDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoIrqNoFlagsDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoMemory24Descriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoMemory32Descriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoMemory32FixedDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoStartDependentDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoStartDependentNoPriDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoVendorSmallDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - - -/* - * Large descriptors - */ - -UINT32 -RsGetStringDataLength ( - ACPI_PARSE_OBJECT *InitializerOp); - -ASL_RESOURCE_NODE * -RsDoDwordIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoDwordMemoryDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoQwordIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoQwordMemoryDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoWordIoDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoWordBusNumberDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoVendorLargeDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - -ASL_RESOURCE_NODE * -RsDoGeneralRegisterDescriptor ( - ACPI_PARSE_OBJECT *Op, - UINT32 CurrentByteOffset); - - #endif diff --git a/sys/contrib/dev/acpica/dbcmds.c b/sys/contrib/dev/acpica/dbcmds.c index 4992787..d8c2d3e 100644 --- a/sys/contrib/dev/acpica/dbcmds.c +++ b/sys/contrib/dev/acpica/dbcmds.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbcmds - debug commands and output routines - * $Revision: 85 $ + * $Revision: 87 $ * ******************************************************************************/ @@ -124,9 +124,9 @@ #include "acresrc.h" #include "acdisasm.h" -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbcmds") @@ -859,7 +859,7 @@ AcpiDbDisplayObjects ( } AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); - AcpiOsPrintf ("Objects of type [%s] defined in the current ACPI Namespace: \n", + AcpiOsPrintf ("Objects of type [%s] defined in the current ACPI Namespace: \n", AcpiUtGetTypeName (Type)); AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); @@ -1175,9 +1175,7 @@ Cleanup: } - - -typedef struct +typedef struct { UINT32 Nodes; UINT32 Objects; @@ -1267,4 +1265,4 @@ AcpiDbCheckIntegrity (void) } -#endif /* ENABLE_DEBUGGER */ +#endif /* ACPI_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/dbdisply.c b/sys/contrib/dev/acpica/dbdisply.c index 6013450..89daabc 100644 --- a/sys/contrib/dev/acpica/dbdisply.c +++ b/sys/contrib/dev/acpica/dbdisply.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbdisply - debug display commands - * $Revision: 76 $ + * $Revision: 78 $ * ******************************************************************************/ @@ -124,10 +124,10 @@ #include "acdebug.h" -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbdisply") @@ -453,9 +453,9 @@ AcpiDbDecodeInternalObject ( } break; - + default: - + AcpiOsPrintf ("%p", ObjDesc); break; } @@ -619,7 +619,7 @@ AcpiDbDisplayInternalObject ( default: - AcpiOsPrintf ("Unknown Reference opcode %X\n", + AcpiOsPrintf ("Unknown Reference opcode %X\n", ObjDesc->Reference.Opcode); break; } @@ -998,5 +998,5 @@ AcpiDbDisplayArgumentObject ( AcpiDbDisplayInternalObject (ObjDesc, WalkState); } -#endif /* ENABLE_DEBUGGER */ +#endif /* ACPI_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/dbexec.c b/sys/contrib/dev/acpica/dbexec.c index ddb8eb0..f17b26d 100644 --- a/sys/contrib/dev/acpica/dbexec.c +++ b/sys/contrib/dev/acpica/dbexec.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbexec - debugger control method execution - * $Revision: 42 $ + * $Revision: 44 $ * ******************************************************************************/ @@ -118,9 +118,9 @@ #include "acpi.h" #include "acdebug.h" -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbexec") @@ -308,7 +308,7 @@ AcpiDbExecute ( ACPI_BUFFER ReturnObj; -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT UINT32 PreviousAllocations; UINT32 Allocations; @@ -335,7 +335,7 @@ AcpiDbExecute ( AcpiOsSleep (0, 10); -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT /* Memory allocation tracking */ @@ -368,7 +368,7 @@ AcpiDbExecute ( } else { - AcpiOsPrintf ("No return object from execution of %s\n", + AcpiOsPrintf ("No return object from execution of %s\n", AcpiGbl_DbMethodInfo.Pathname); } } @@ -513,6 +513,6 @@ AcpiDbCreateExecutionThreads ( } -#endif /* ENABLE_DEBUGGER */ +#endif /* ACPI_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/dbfileio.c b/sys/contrib/dev/acpica/dbfileio.c index c04f531..12f970b 100644 --- a/sys/contrib/dev/acpica/dbfileio.c +++ b/sys/contrib/dev/acpica/dbfileio.c @@ -2,7 +2,7 @@ * * Module Name: dbfileio - Debugger file I/O commands. These can't usually * be used when running the debugger in Ring 0 (Kernel mode) - * $Revision: 67 $ + * $Revision: 68 $ * ******************************************************************************/ @@ -121,9 +121,9 @@ #include "acnamesp.h" #include "actables.h" -#if (defined ENABLE_DEBUGGER || defined ACPI_DISASSEMBLER) +#if (defined ACPI_DEBUGGER || defined ACPI_DISASSEMBLER) -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbfileio") @@ -180,7 +180,7 @@ AcpiDbMatchArgument ( } -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER /******************************************************************************* * * FUNCTION: AcpiDbCloseDebugFile @@ -509,5 +509,5 @@ AcpiDbLoadAcpiTable ( } -#endif /* ENABLE_DEBUGGER */ +#endif /* ACPI_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/dbhistry.c b/sys/contrib/dev/acpica/dbhistry.c index 58cdc50..fb5b0e8 100644 --- a/sys/contrib/dev/acpica/dbhistry.c +++ b/sys/contrib/dev/acpica/dbhistry.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dbhistry - debugger HISTORY command - * $Revision: 24 $ + * $Revision: 25 $ * *****************************************************************************/ @@ -118,9 +118,9 @@ #include "acpi.h" #include "acdebug.h" -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbhistry") @@ -287,5 +287,5 @@ AcpiDbGetFromHistory ( } -#endif /* ENABLE_DEBUGGER */ +#endif /* ACPI_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/dbinput.c b/sys/contrib/dev/acpica/dbinput.c index bc3c385..208be5d 100644 --- a/sys/contrib/dev/acpica/dbinput.c +++ b/sys/contrib/dev/acpica/dbinput.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbinput - user front-end to the AML debugger - * $Revision: 86 $ + * $Revision: 87 $ * ******************************************************************************/ @@ -119,9 +119,9 @@ #include "acdebug.h" -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbinput") @@ -980,5 +980,5 @@ AcpiDbUserCommands ( } -#endif /* ENABLE_DEBUGGER */ +#endif /* ACPI_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/dbstats.c b/sys/contrib/dev/acpica/dbstats.c index a6db41e..ec20e5a 100644 --- a/sys/contrib/dev/acpica/dbstats.c +++ b/sys/contrib/dev/acpica/dbstats.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbstats - Generation and display of ACPI table statistics - * $Revision: 60 $ + * $Revision: 61 $ * ******************************************************************************/ @@ -119,9 +119,9 @@ #include <acdebug.h> #include <acnamesp.h> -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbstats") /* @@ -240,8 +240,6 @@ AcpiDbEnumerateObject ( } -#ifndef PARSER_ONLY - /******************************************************************************* * * FUNCTION: AcpiDbClassifyOneObject @@ -346,8 +344,6 @@ AcpiDbCountNamespaceObjects ( FALSE, AcpiDbClassifyOneObject, NULL, NULL); } -#endif - /******************************************************************************* * @@ -395,13 +391,11 @@ AcpiDbDisplayStatistics ( switch (Type) { -#ifndef PARSER_ONLY case CMD_STAT_ALLOCATIONS: #ifdef ACPI_DBG_TRACK_ALLOCATIONS AcpiUtDumpAllocationInfo (); #endif break; -#endif case CMD_STAT_TABLES: @@ -414,8 +408,6 @@ AcpiDbDisplayStatistics ( case CMD_STAT_OBJECTS: -#ifndef PARSER_ONLY - AcpiDbCountNamespaceObjects (); AcpiOsPrintf ("\nObjects defined in the current namespace:\n\n"); @@ -432,8 +424,6 @@ AcpiDbDisplayStatistics ( AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "TOTALS:", AcpiGbl_NumNodes, AcpiGbl_NumObjects); - -#endif break; case CMD_STAT_MEMORY: @@ -537,7 +527,7 @@ AcpiDbDisplayStatistics ( case CMD_STAT_STACK: -#if defined(ACPI_DEBUG) +#if defined(ACPI_DEBUG_OUTPUT) Size = (UINT32) (AcpiGbl_EntryStackPointer - AcpiGbl_LowestStackPointer); @@ -558,4 +548,4 @@ AcpiDbDisplayStatistics ( } -#endif /* ENABLE_DEBUGGER */ +#endif /* ACPI_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/dbutils.c b/sys/contrib/dev/acpica/dbutils.c index f939f35..5ecdc63 100644 --- a/sys/contrib/dev/acpica/dbutils.c +++ b/sys/contrib/dev/acpica/dbutils.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbutils - AML debugger utilities - * $Revision: 55 $ + * $Revision: 56 $ * ******************************************************************************/ @@ -123,9 +123,9 @@ #include "acdispat.h" -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbutils") @@ -486,6 +486,6 @@ AcpiDbLocalNsLookup ( } -#endif /* ENABLE_DEBUGGER */ +#endif /* ACPI_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/dbxface.c b/sys/contrib/dev/acpica/dbxface.c index 5bad063..5844695 100644 --- a/sys/contrib/dev/acpica/dbxface.c +++ b/sys/contrib/dev/acpica/dbxface.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dbxface - AML Debugger external interfaces - * $Revision: 61 $ + * $Revision: 64 $ * ******************************************************************************/ @@ -121,9 +121,9 @@ #include "acdisasm.h" -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbxface") @@ -158,7 +158,7 @@ AcpiDbSingleStep ( /* Check for single-step breakpoint */ - if (WalkState->MethodBreakpoint && + if (WalkState->MethodBreakpoint && (WalkState->MethodBreakpoint <= Op->Common.AmlOffset)) { /* Check if the breakpoint has been reached or passed */ @@ -172,7 +172,7 @@ AcpiDbSingleStep ( /* Check for user breakpoint (Must be on exact Aml offset) */ - else if (WalkState->UserBreakpoint && + else if (WalkState->UserBreakpoint && (WalkState->UserBreakpoint == Op->Common.AmlOffset)) { AcpiOsPrintf ("***UserBreakpoint*** at AML offset %X\n", Op->Common.AmlOffset); @@ -292,7 +292,7 @@ AcpiDbSingleStep ( /* Restore everything */ Op->Common.Next = Next; - AcpiOsPrintf ("\n"); + AcpiOsPrintf ("\n\n"); AcpiDbgLevel = OriginalDebugLevel; } @@ -512,4 +512,4 @@ AcpiDbTerminate (void) } -#endif /* ENABLE_DEBUGGER */ +#endif /* ACPI_DEBUGGER */ diff --git a/sys/contrib/dev/acpica/dmbuffer.c b/sys/contrib/dev/acpica/dmbuffer.c index b349415..8d88136 100644 --- a/sys/contrib/dev/acpica/dmbuffer.c +++ b/sys/contrib/dev/acpica/dmbuffer.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dmbuffer - AML disassembler, buffer and string support - * $Revision: 5 $ + * $Revision: 7 $ * ******************************************************************************/ @@ -123,7 +123,7 @@ #ifdef ACPI_DISASSEMBLER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dmbuffer") @@ -513,7 +513,7 @@ AcpiDmUnicode ( /******************************************************************************* * - * FUNCTION: AcpiIsEisaId + * FUNCTION: AcpiIsEisaId * * PARAMETERS: Op - Op to be examined * @@ -541,7 +541,7 @@ AcpiIsEisaId ( { return; } - + /* We are looking for _HID */ if (ACPI_STRNCMP ((char *) &Name, "_HID", 4)) @@ -587,7 +587,7 @@ AcpiIsEisaId ( /******************************************************************************* * - * FUNCTION: AcpiDmEisaId + * FUNCTION: AcpiDmEisaId * * PARAMETERS: EncodedId - Raw encoded EISA ID. * diff --git a/sys/contrib/dev/acpica/dmnames.c b/sys/contrib/dev/acpica/dmnames.c index b773c91..18e3614 100644 --- a/sys/contrib/dev/acpica/dmnames.c +++ b/sys/contrib/dev/acpica/dmnames.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dmnames - AML disassembler, names, namestrings, pathnames - * $Revision: 2 $ + * $Revision: 3 $ * ******************************************************************************/ @@ -124,7 +124,7 @@ #ifdef ACPI_DISASSEMBLER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dmnames") @@ -145,7 +145,7 @@ AcpiDmValidateName ( char *Name, ACPI_PARSE_OBJECT *Op) { -#ifdef PARSER_ONLY +#if 0 ACPI_PARSE_OBJECT *TargetOp; @@ -226,58 +226,6 @@ AcpiDmDumpName ( * ******************************************************************************/ -#ifdef PARSER_ONLY - -ACPI_STATUS -AcpiPsDisplayObjectPathname ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT *Op) -{ - ACPI_PARSE_OBJECT *TargetOp; - char *Name; - - - if (Op->Common.Flags & ACPI_PARSEOP_GENERIC) - { - Name = Op->Common.Value.Name; - if (Name[0] == '\\') - { - AcpiOsPrintf (" (Fully Qualified Pathname)"); - return (AE_OK); - } - } - else - { - Name = (char *) &Op->Named.Name; - } - - /* Search parent tree up to the root if necessary */ - - TargetOp = AcpiPsFind (Op, Name, 0, 0); - if (!TargetOp) - { - /* - * Didn't find the name in the parse tree. This may be - * a problem, or it may simply be one of the predefined names - * (such as _OS_). Rather than worry about looking up all - * the predefined names, just display the name as given - */ - AcpiOsPrintf (" **** Path not found in parse tree"); - } - else - { - /* The target was found, print the name and complete path */ - - AcpiOsPrintf (" (Path "); - AcpiDmDisplayPath (TargetOp); - AcpiOsPrintf (")"); - } - - return (AE_OK); -} - -#else - ACPI_STATUS AcpiPsDisplayObjectPathname ( ACPI_WALK_STATE *WalkState, @@ -341,8 +289,6 @@ Exit: return (Status); } -#endif - /******************************************************************************* * diff --git a/sys/contrib/dev/acpica/dmopcode.c b/sys/contrib/dev/acpica/dmopcode.c index b08042e..2a35fd3 100644 --- a/sys/contrib/dev/acpica/dmopcode.c +++ b/sys/contrib/dev/acpica/dmopcode.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dmopcode - AML disassembler, specific AML opcodes - * $Revision: 75 $ + * $Revision: 77 $ * ******************************************************************************/ @@ -122,7 +122,7 @@ #ifdef ACPI_DISASSEMBLER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dmopcode") @@ -419,7 +419,7 @@ AcpiDmDisassembleOneOp ( case AML_BYTE_OP: - AcpiOsPrintf ("0x%.2X", (UINT32) Op->Common.Value.Integer8); + AcpiOsPrintf ("0x%2.2X", (UINT32) Op->Common.Value.Integer8); break; @@ -431,7 +431,7 @@ AcpiDmDisassembleOneOp ( } else { - AcpiOsPrintf ("0x%.2X", (UINT32) Op->Common.Value.Integer16); + AcpiOsPrintf ("0x%4.4X", (UINT32) Op->Common.Value.Integer16); } break; @@ -442,30 +442,17 @@ AcpiDmDisassembleOneOp ( { AcpiDmEisaId (Op->Common.Value.Integer32); } - else if ((Op->Common.Value.Integer32 == ACPI_UINT32_MAX) && - (AcpiGbl_DSDT->Revision < 2)) - { - AcpiOsPrintf ("Ones"); - } else { - AcpiOsPrintf ("0x%.2X", Op->Common.Value.Integer32); + AcpiOsPrintf ("0x%8.8X", Op->Common.Value.Integer32); } break; case AML_QWORD_OP: - if ((Op->Common.Value.Integer == ACPI_INTEGER_MAX) && - (AcpiGbl_DSDT->Revision >= 2)) - { - AcpiOsPrintf ("Ones"); - } - else - { - AcpiOsPrintf ("0x%X%8.8X", Op->Common.Value.Integer64.Hi, - Op->Common.Value.Integer64.Lo); - } + AcpiOsPrintf ("0x%8.8X%8.8X", Op->Common.Value.Integer64.Hi, + Op->Common.Value.Integer64.Lo); break; @@ -596,7 +583,7 @@ AcpiDmDisassembleOneOp ( AcpiOsPrintf ("%s", OpInfo->Name); -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER if ((Op->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) && (WalkState) && diff --git a/sys/contrib/dev/acpica/dmresrc.c b/sys/contrib/dev/acpica/dmresrc.c index b60f0c2..03d34bc 100644 --- a/sys/contrib/dev/acpica/dmresrc.c +++ b/sys/contrib/dev/acpica/dmresrc.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dmresrc.c - Resource Descriptor disassembly - * $Revision: 3 $ + * $Revision: 5 $ * ******************************************************************************/ @@ -121,7 +121,7 @@ #ifdef ACPI_DISASSEMBLER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbresrc") @@ -305,7 +305,7 @@ AcpiDmResourceDescriptor ( AcpiOsPrintf ("/*** Missing EndDependentFunctions descriptor */"); /* - * We could fix the problem, but then the ASL would not match the AML + * We could fix the problem, but then the ASL would not match the AML * So, we don't do this: * AcpiDmEndDependentDescriptor (DescriptorBody, Length, Level); */ @@ -391,7 +391,7 @@ AcpiDmResourceDescriptor ( * * PARAMETERS: Op - Buffer Op to be examined * - * RETURN: TRUE if this Buffer Op contains a valid resource + * RETURN: TRUE if this Buffer Op contains a valid resource * descriptor. * * DESCRIPTION: Walk a byte list to determine if it consists of a valid set @@ -441,7 +441,7 @@ AcpiDmIsResourceDescriptor ( } /* - * Walk the byte list. Abort on any invalid descriptor ID or + * Walk the byte list. Abort on any invalid descriptor ID or * or length */ for (CurrentByteOffset = 0; CurrentByteOffset < ByteCount; ) diff --git a/sys/contrib/dev/acpica/dmresrcl.c b/sys/contrib/dev/acpica/dmresrcl.c index 995569f..df27704 100644 --- a/sys/contrib/dev/acpica/dmresrcl.c +++ b/sys/contrib/dev/acpica/dmresrcl.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly - * $Revision: 5 $ + * $Revision: 7 $ * ******************************************************************************/ @@ -121,7 +121,7 @@ #ifdef ACPI_DISASSEMBLER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbresrcl") @@ -286,19 +286,19 @@ AcpiDmDwordDescriptor ( AcpiOsPrintf ("\n"); AcpiDmIndent (Level + 1); - AcpiOsPrintf ("0x%8.8X,\n", + AcpiOsPrintf ("0x%8.8X,\n", Resource->Granularity); AcpiDmIndent (Level + 1); AcpiOsPrintf ("0x%8.8X,\n", Resource->AddressMin); AcpiDmIndent (Level + 1); - AcpiOsPrintf ("0x%8.8X,\n", + AcpiOsPrintf ("0x%8.8X,\n", Resource->AddressMax); AcpiDmIndent (Level + 1); AcpiOsPrintf ("0x%8.8X,\n", Resource->TranslationOffset); AcpiDmIndent (Level + 1); - AcpiOsPrintf ("0x%8.8X", + AcpiOsPrintf ("0x%8.8X", Resource->AddressLength); /* Optional fields */ @@ -512,9 +512,9 @@ AcpiDmGenericRegisterDescriptor ( AcpiDmIndent (Level); AcpiOsPrintf ("Register ("); - + AcpiDmAddressSpace (Resource->AddressSpaceId); - + AcpiOsPrintf ("0x%2.2X, 0x%2.2X, 0x%8.8X%8.8X)\n", (UINT32) Resource->BitWidth, (UINT32) Resource->BitOffset, diff --git a/sys/contrib/dev/acpica/dmresrcs.c b/sys/contrib/dev/acpica/dmresrcs.c index 114e1d1..a0ecee9 100644 --- a/sys/contrib/dev/acpica/dmresrcs.c +++ b/sys/contrib/dev/acpica/dmresrcs.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly - * $Revision: 2 $ + * $Revision: 3 $ * ******************************************************************************/ @@ -121,7 +121,7 @@ #ifdef ACPI_DISASSEMBLER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbresrcs") diff --git a/sys/contrib/dev/acpica/dmutils.c b/sys/contrib/dev/acpica/dmutils.c index 1cfd5b5..bb6fca0 100644 --- a/sys/contrib/dev/acpica/dmutils.c +++ b/sys/contrib/dev/acpica/dmutils.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dmutils - AML disassembler utilities - * $Revision: 2 $ + * $Revision: 4 $ * ******************************************************************************/ @@ -122,12 +122,10 @@ #ifdef ACPI_DISASSEMBLER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dmutils") - - /* Data used in keeping track of fields */ #if 0 const NATIVE_CHAR *AcpiGbl_FENames[NUM_FIELD_NAMES] = @@ -401,5 +399,4 @@ AcpiDmCommaIfFieldMember ( } - #endif diff --git a/sys/contrib/dev/acpica/dmwalk.c b/sys/contrib/dev/acpica/dmwalk.c index 86404e2..2883a29 100644 --- a/sys/contrib/dev/acpica/dmwalk.c +++ b/sys/contrib/dev/acpica/dmwalk.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dmwalk - AML disassembly tree walk - * $Revision: 6 $ + * $Revision: 8 $ * ******************************************************************************/ @@ -124,14 +124,13 @@ #ifdef ACPI_DISASSEMBLER -#define _COMPONENT ACPI_DEBUGGER +#define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dmwalk") #define DB_FULL_OP_INFO "%5.5X #%4.4hX " - /******************************************************************************* * * FUNCTION: AcpiDmDisassemble @@ -421,7 +420,7 @@ AcpiDmListType ( * * RETURN: Status * - * DESCRIPTION: First visitation of a parse object during tree descent. + * DESCRIPTION: First visitation of a parse object during tree descent. * Decode opcode name and begin parameter list(s), if any. * ******************************************************************************/ @@ -483,7 +482,7 @@ AcpiDmDescendingOp ( */ OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - if ((OpInfo->Flags & AML_HAS_ARGS) || + if ((OpInfo->Flags & AML_HAS_ARGS) || (Op->Common.AmlOpcode == AML_EVENT_OP)) { /* This opcode has an argument list */ @@ -680,7 +679,7 @@ AcpiDmDescendingOp ( if (Op->Common.DisasmOpcode == ACPI_DASM_RESOURCE) { /* - * We have a resource list. Don't need to output + * We have a resource list. Don't need to output * the buffer size Op. Open up a new block */ NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; diff --git a/sys/contrib/dev/acpica/dsfield.c b/sys/contrib/dev/acpica/dsfield.c index 9188b8d..cb054aa 100644 --- a/sys/contrib/dev/acpica/dsfield.c +++ b/sys/contrib/dev/acpica/dsfield.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsfield - Dispatcher field routines - * $Revision: 65 $ + * $Revision: 66 $ * *****************************************************************************/ @@ -312,7 +312,7 @@ AcpiDsGetFieldNames ( { case AML_INT_RESERVEDFIELD_OP: - Position = (ACPI_INTEGER) Info->FieldBitPosition + Position = (ACPI_INTEGER) Info->FieldBitPosition + (ACPI_INTEGER) Arg->Common.Value.Size; if (Position > ACPI_UINT32_MAX) @@ -374,7 +374,7 @@ AcpiDsGetFieldNames ( /* Keep track of bit position for the next field */ - Position = (ACPI_INTEGER) Info->FieldBitPosition + Position = (ACPI_INTEGER) Info->FieldBitPosition + (ACPI_INTEGER) Arg->Common.Value.Size; if (Position > ACPI_UINT32_MAX) diff --git a/sys/contrib/dev/acpica/dsmethod.c b/sys/contrib/dev/acpica/dsmethod.c index 927c263..6de47cf 100644 --- a/sys/contrib/dev/acpica/dsmethod.c +++ b/sys/contrib/dev/acpica/dsmethod.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsmethod - Parser/Interpreter interface - control method parsing - * $Revision: 87 $ + * $Revision: 88 $ * *****************************************************************************/ @@ -249,7 +249,7 @@ AcpiDsParseMethod ( return_ACPI_STATUS (Status); } - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** [%4.4s] Parsed **** NamedObj=%p Op=%p\n", ((ACPI_NAMESPACE_NODE *) ObjHandle)->Name.Ascii, ObjHandle, Op)); @@ -459,7 +459,7 @@ AcpiDsCallControlMethod ( ThisWalkState->NumOperands = 0; - ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, + ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Starting nested execution, newstate=%p\n", NextWalkState)); return_ACPI_STATUS (AE_OK); diff --git a/sys/contrib/dev/acpica/dsmthdat.c b/sys/contrib/dev/acpica/dsmthdat.c index 12bfc85..e466158 100644 --- a/sys/contrib/dev/acpica/dsmthdat.c +++ b/sys/contrib/dev/acpica/dsmthdat.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: dsmthdat - control method arguments and local variables - * $Revision: 62 $ + * $Revision: 63 $ * ******************************************************************************/ @@ -704,24 +704,43 @@ AcpiDsStoreObjectToLocal ( * * Weird, but true. */ - if ((Opcode == AML_ARG_OP) && - (ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) == ACPI_DESC_TYPE_NAMED)) + if (Opcode == AML_ARG_OP) { - ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, - "Arg (%p) is an ObjRef(Node), storing in node %p\n", - ObjDesc, CurrentObjDesc)); - - /* Detach an existing object from the Node */ - - AcpiNsDetachObject ((ACPI_NAMESPACE_NODE *) CurrentObjDesc); - - /* - * Store this object into the Node - * (perform the indirect store) + /* + * Make sure that the object is the correct type. This may be overkill, but + * it is here because references were NS nodes in the past. Now they are + * operand objects of type Reference. */ - Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) CurrentObjDesc, - ObjDesc, ACPI_GET_OBJECT_TYPE (ObjDesc)); - return_ACPI_STATUS (Status); + if (ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) != ACPI_DESC_TYPE_OPERAND) + { + ACPI_REPORT_ERROR (("Invalid descriptor type while storing to method arg: %X\n", + CurrentObjDesc->Common.Type)); + return_ACPI_STATUS (AE_AML_INTERNAL); + } + + /* + * If we have a valid reference object that came from RefOf(), do the + * indirect store + */ + if ((CurrentObjDesc->Common.Type == INTERNAL_TYPE_REFERENCE) && + (CurrentObjDesc->Reference.Opcode == AML_REF_OF_OP)) + { + ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, + "Arg (%p) is an ObjRef(Node), storing in node %p\n", + ObjDesc, CurrentObjDesc)); + + /* Detach an existing object from the referenced Node */ + + AcpiNsDetachObject (CurrentObjDesc->Reference.Object); + + /* + * Store this object into the Node + * (perform the indirect store) + */ + Status = AcpiNsAttachObject (CurrentObjDesc->Reference.Object, + ObjDesc, ACPI_GET_OBJECT_TYPE (ObjDesc)); + return_ACPI_STATUS (Status); + } } /* diff --git a/sys/contrib/dev/acpica/dsobject.c b/sys/contrib/dev/acpica/dsobject.c index 2acf819..7f54e84 100644 --- a/sys/contrib/dev/acpica/dsobject.c +++ b/sys/contrib/dev/acpica/dsobject.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dsobject - Dispatcher object management routines - * $Revision: 105 $ + * $Revision: 106 $ * *****************************************************************************/ @@ -267,7 +267,7 @@ AcpiDsInitOneObject ( * * RETURN: Status * - * DESCRIPTION: Walk the namespace starting at "StartNode" and perform any + * DESCRIPTION: Walk the namespace starting at "StartNode" and perform any * necessary initialization on the objects found therein * ******************************************************************************/ @@ -300,7 +300,7 @@ AcpiDsInitializeObjects ( AcpiDsInitOneObject, &Info, NULL); if (ACPI_FAILURE (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "WalkNamespace failed, %s\n", + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "WalkNamespace failed, %s\n", AcpiFormatException (Status))); } @@ -461,7 +461,7 @@ AcpiDsBuildInternalBufferObj ( /* * Second arg is the buffer data (optional) ByteList can be either - * individual bytes or a string initializer. In either case, a + * individual bytes or a string initializer. In either case, a * ByteList appears in the AML. */ Arg = Op->Common.Value.Arg; /* skip first arg */ @@ -471,7 +471,7 @@ AcpiDsBuildInternalBufferObj ( { if (ByteList->Common.AmlOpcode != AML_INT_BYTELIST_OP) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Expecting bytelist, got AML opcode %X in op %p\n", ByteList->Common.AmlOpcode, ByteList)); @@ -484,7 +484,7 @@ AcpiDsBuildInternalBufferObj ( /* * The buffer length (number of bytes) will be the larger of: - * 1) The specified buffer length and + * 1) The specified buffer length and * 2) The length of the initializer byte list */ ObjDesc->Buffer.Length = BufferLength; @@ -507,7 +507,7 @@ AcpiDsBuildInternalBufferObj ( if (!ObjDesc->Buffer.Pointer) { AcpiUtDeleteObjectDesc (ObjDesc); - return_ACPI_STATUS (AE_NO_MEMORY); + return_ACPI_STATUS (AE_NO_MEMORY); } /* Initialize buffer from the ByteList (if present) */ @@ -789,7 +789,7 @@ AcpiDsInitObjectFromOp ( break; - case ACPI_TYPE_INTEGER: + case ACPI_TYPE_INTEGER: switch (OpInfo->Type) { @@ -882,7 +882,7 @@ AcpiDsInitObjectFromOp ( ObjDesc->Reference.Opcode = AML_LOCAL_OP; ObjDesc->Reference.Offset = Opcode - AML_LOCAL_OP; #ifndef ACPI_NO_METHOD_EXECUTION - AcpiDsMethodDataGetNode (AML_LOCAL_OP, ObjDesc->Reference.Offset, + AcpiDsMethodDataGetNode (AML_LOCAL_OP, ObjDesc->Reference.Offset, WalkState, (ACPI_NAMESPACE_NODE **) &ObjDesc->Reference.Object); #endif break; @@ -924,4 +924,3 @@ AcpiDsInitObjectFromOp ( } - diff --git a/sys/contrib/dev/acpica/dsopcode.c b/sys/contrib/dev/acpica/dsopcode.c index 8cf27ae..93a2d52 100644 --- a/sys/contrib/dev/acpica/dsopcode.c +++ b/sys/contrib/dev/acpica/dsopcode.c @@ -2,7 +2,7 @@ * * Module Name: dsopcode - Dispatcher Op Region support and handling of * "control" opcodes - * $Revision: 80 $ + * $Revision: 81 $ * *****************************************************************************/ @@ -319,7 +319,7 @@ AcpiDsGetBufferArguments ( Node = ObjDesc->Buffer.Node; if (!Node) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No pointer back to NS node in buffer %p\n", ObjDesc)); return_ACPI_STATUS (AE_AML_INTERNAL); } @@ -368,7 +368,7 @@ AcpiDsGetPackageArguments ( Node = ObjDesc->Package.Node; if (!Node) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No pointer back to NS node in package %p\n", ObjDesc)); return_ACPI_STATUS (AE_AML_INTERNAL); } @@ -515,7 +515,7 @@ AcpiDsInitBufferField ( /* * The last parameter to all of these opcodes (ResultDesc) started * out as a NameString, and should therefore now be a NS node - * after resolution in AcpiExResolveOperands(). + * after resolution in AcpiExResolveOperands(). */ if (ACPI_GET_DESCRIPTOR_TYPE (ResultDesc) != ACPI_DESC_TYPE_NAMED) { @@ -711,10 +711,10 @@ AcpiDsEvalBufferFieldOperands ( /* Resolve the operands */ - Status = AcpiExResolveOperands (Op->Common.AmlOpcode, + Status = AcpiExResolveOperands (Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); - ACPI_DUMP_OPERANDS (ACPI_WALK_OPERANDS, ACPI_IMODE_EXECUTE, + ACPI_DUMP_OPERANDS (ACPI_WALK_OPERANDS, ACPI_IMODE_EXECUTE, AcpiPsGetOpcodeName (Op->Common.AmlOpcode), WalkState->NumOperands, "after AcpiExResolveOperands"); @@ -732,16 +732,16 @@ AcpiDsEvalBufferFieldOperands ( { /* NOTE: Slightly different operands for this opcode */ - Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, - WalkState->Operands[0], WalkState->Operands[1], + Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, + WalkState->Operands[0], WalkState->Operands[1], WalkState->Operands[2], WalkState->Operands[3]); } else { /* All other, CreateXxxField opcodes */ - Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, - WalkState->Operands[0], WalkState->Operands[1], + Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, + WalkState->Operands[0], WalkState->Operands[1], NULL, WalkState->Operands[2]); } @@ -848,7 +848,6 @@ AcpiDsEvalRegionOperands ( } - /***************************************************************************** * * FUNCTION: AcpiDsEvalDataObjectOperands @@ -910,7 +909,7 @@ AcpiDsEvalDataObjectOperands ( AcpiUtRemoveReference (ArgDesc); - /* + /* * Create the actual data object */ switch (Op->Common.AmlOpcode) @@ -950,7 +949,6 @@ AcpiDsEvalDataObjectOperands ( } - /******************************************************************************* * * FUNCTION: AcpiDsExecBeginControlOp diff --git a/sys/contrib/dev/acpica/dswexec.c b/sys/contrib/dev/acpica/dswexec.c index f8582e3..316442b 100644 --- a/sys/contrib/dev/acpica/dswexec.c +++ b/sys/contrib/dev/acpica/dswexec.c @@ -2,7 +2,7 @@ * * Module Name: dswexec - Dispatcher method execution callbacks; * dispatch to interpreter. - * $Revision: 94 $ + * $Revision: 95 $ * *****************************************************************************/ @@ -417,7 +417,6 @@ AcpiDsExecBeginOp ( } - /***************************************************************************** * * FUNCTION: AcpiDsExecEndOp @@ -660,7 +659,7 @@ AcpiDsExecEndOp ( case AML_INT_EVAL_SUBTREE_OP: - Status = AcpiDsEvalDataObjectOperands (WalkState, Op, + Status = AcpiDsEvalDataObjectOperands (WalkState, Op, AcpiNsGetAttachedObject (Op->Common.Parent->Common.Node)); break; diff --git a/sys/contrib/dev/acpica/dswload.c b/sys/contrib/dev/acpica/dswload.c index 6e794be..161c570 100644 --- a/sys/contrib/dev/acpica/dswload.c +++ b/sys/contrib/dev/acpica/dswload.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dswload - Dispatcher namespace load callbacks - * $Revision: 69 $ + * $Revision: 70 $ * *****************************************************************************/ @@ -404,7 +404,7 @@ AcpiDsLoad2BeginOp ( NATIVE_CHAR *BufferPtr; - ACPI_FUNCTION_NAME ("DsLoad2BeginOp"); + ACPI_FUNCTION_TRACE ("DsLoad2BeginOp"); Op = WalkState->Op; @@ -417,7 +417,7 @@ AcpiDsLoad2BeginOp ( if ((!(WalkState->OpInfo->Flags & AML_NSOPCODE) && (WalkState->Opcode != AML_INT_NAMEPATH_OP)) || (!(WalkState->OpInfo->Flags & AML_NAMED))) { - return (AE_OK); + return_ACPI_STATUS (AE_OK); } /* @@ -432,7 +432,7 @@ AcpiDsLoad2BeginOp ( { /* No name, just exit */ - return (AE_OK); + return_ACPI_STATUS (AE_OK); } } else @@ -488,11 +488,11 @@ AcpiDsLoad2BeginOp ( Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { - return (Status); + return_ACPI_STATUS (Status); } } - return (AE_OK); + return_ACPI_STATUS (AE_OK); } /* @@ -513,7 +513,7 @@ AcpiDsLoad2BeginOp ( Op = AcpiPsAllocOp (WalkState->Opcode); if (!Op) { - return (AE_NO_MEMORY); + return_ACPI_STATUS (AE_NO_MEMORY); } /* Initialize the new op */ @@ -535,7 +535,7 @@ AcpiDsLoad2BeginOp ( Op->Common.Node = Node; } - return (Status); + return_ACPI_STATUS (Status); } @@ -569,7 +569,7 @@ AcpiDsLoad2EndOp ( #endif - ACPI_FUNCTION_NAME ("DsLoad2EndOp"); + ACPI_FUNCTION_TRACE ("DsLoad2EndOp"); Op = WalkState->Op; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Opcode [%s] Op %p State %p\n", @@ -579,7 +579,7 @@ AcpiDsLoad2EndOp ( if (!(WalkState->OpInfo->Flags & AML_NSOBJECT)) { - return (AE_OK); + return_ACPI_STATUS (AE_OK); } if (Op->Common.AmlOpcode == AML_SCOPE_OP) @@ -606,7 +606,7 @@ AcpiDsLoad2EndOp ( /* Pop the scope stack */ - if (AcpiNsOpensScope (ObjectType)) + if (AcpiNsOpensScope (ObjectType) && (Op->Common.AmlOpcode != AML_INT_METHODCALL_OP)) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "(%s) Popping scope for Op %p\n", AcpiUtGetTypeName (ObjectType), Op)); @@ -614,7 +614,7 @@ AcpiDsLoad2EndOp ( Status = AcpiDsScopeStackPop (WalkState); if (ACPI_FAILURE (Status)) { - return (Status); + return_ACPI_STATUS (Status); } } @@ -871,7 +871,7 @@ Cleanup: WalkState->Operands[0] = NULL; WalkState->NumOperands = 0; - return (Status); + return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/dswstate.c b/sys/contrib/dev/acpica/dswstate.c index 2b83708..8da290a 100644 --- a/sys/contrib/dev/acpica/dswstate.c +++ b/sys/contrib/dev/acpica/dswstate.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: dswstate - Dispatcher parse tree walk management routines - * $Revision: 67 $ + * $Revision: 68 $ * *****************************************************************************/ @@ -962,6 +962,8 @@ AcpiDsCreateWalkState ( WalkState->MethodDesc = MthDesc; WalkState->Thread = Thread; + WalkState->ParserState.StartOp = Origin; + /* Init the method args/local */ #if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY)) @@ -1012,6 +1014,7 @@ AcpiDsInitAmlWalk ( { ACPI_STATUS Status; ACPI_PARSE_STATE *ParserState = &WalkState->ParserState; + ACPI_PARSE_OBJECT *ExtraOp; ACPI_FUNCTION_TRACE ("DsInitAmlWalk"); @@ -1059,9 +1062,26 @@ AcpiDsInitAmlWalk ( } else { - /* Setup the current scope */ - - ParserState->StartNode = ParserState->StartOp->Common.Node; + /* + * Setup the current scope. + * Find a Named Op that has a namespace node associated with it. + * search upwards from this Op. Current scope is the first + * Op with a namespace node. + */ + ExtraOp = ParserState->StartOp; + while (ExtraOp && !ExtraOp->Common.Node) + { + ExtraOp = ExtraOp->Common.Parent; + } + if (!ExtraOp) + { + ParserState->StartNode = NULL; + } + else + { + ParserState->StartNode = ExtraOp->Common.Node; + } + if (ParserState->StartNode) { /* Push start scope on scope stack and make it current */ diff --git a/sys/contrib/dev/acpica/evevent.c b/sys/contrib/dev/acpica/evevent.c index e4a22b3..46617c3 100644 --- a/sys/contrib/dev/acpica/evevent.c +++ b/sys/contrib/dev/acpica/evevent.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evevent - Fixed and General Purpose Even handling and dispatch - * $Revision: 88 $ + * $Revision: 90 $ * *****************************************************************************/ @@ -198,7 +198,7 @@ AcpiEvHandlerInitialize ( ACPI_STATUS Status; - ACPI_FUNCTION_TRACE ("EvInitialize"); + ACPI_FUNCTION_TRACE ("EvHandlerInitialize"); /* Install the SCI handler */ @@ -545,12 +545,12 @@ AcpiEvGpeInitialize (void) GpeRegisterInfo->BaseGpeNumber = (UINT8) (AcpiGbl_GpeBlockInfo[GpeBlock].BlockBaseNumber + (ACPI_MUL_8 (i))); - ACPI_STORE_ADDRESS (GpeRegisterInfo->StatusAddress.Address, - (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address) + ACPI_STORE_ADDRESS (GpeRegisterInfo->StatusAddress.Address, + (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address) + i)); ACPI_STORE_ADDRESS (GpeRegisterInfo->EnableAddress.Address, - (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address) + (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address) + i + AcpiGbl_GpeBlockInfo[GpeBlock].RegisterCount)); @@ -599,7 +599,7 @@ AcpiEvGpeInitialize (void) ACPI_LODWORD (ACPI_GET_ADDRESS (AcpiGbl_GpeBlockInfo[GpeBlock].BlockAddress->Address)))); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "GPE Block%d Range GPE #%2.2X to GPE #%2.2X\n", - (INT32) GpeBlock, + (INT32) GpeBlock, AcpiGbl_GpeBlockInfo[GpeBlock].BlockBaseNumber, AcpiGbl_GpeBlockInfo[GpeBlock].BlockBaseNumber + ((AcpiGbl_GpeBlockInfo[GpeBlock].RegisterCount * 8) -1))); diff --git a/sys/contrib/dev/acpica/evmisc.c b/sys/contrib/dev/acpica/evmisc.c index 86f91a5..ad4c637 100644 --- a/sys/contrib/dev/acpica/evmisc.c +++ b/sys/contrib/dev/acpica/evmisc.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evmisc - Miscellaneous event manager support functions - * $Revision: 53 $ + * $Revision: 56 $ * *****************************************************************************/ @@ -480,7 +480,7 @@ AcpiEvGlobalLockHandler ( /* Run the Global Lock thread which will signal all waiting threads */ - Status = AcpiOsQueueForExecution (OSD_PRIORITY_HIGH, + Status = AcpiOsQueueForExecution (OSD_PRIORITY_HIGH, AcpiEvGlobalLockThread, Context); if (ACPI_FAILURE (Status)) { @@ -556,12 +556,14 @@ AcpiEvAcquireGlobalLock ( ACPI_FUNCTION_TRACE ("EvAcquireGlobalLock"); +#ifndef ACPI_APPLICATION /* Make sure that we actually have a global lock */ if (!AcpiGbl_GlobalLockPresent) { return_ACPI_STATUS (AE_NO_GLOBAL_LOCK); } +#endif /* One more thread wants the global lock */ @@ -672,9 +674,64 @@ AcpiEvReleaseGlobalLock (void) void AcpiEvTerminate (void) { + NATIVE_UINT_MAX32 i; + ACPI_STATUS Status; + ACPI_FUNCTION_TRACE ("EvTerminate"); + /* + * Disable all event-related functionality. + * In all cases, on error, print a message but obviously we don't abort. + */ + + /* + * Disable all fixed events + */ + for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) + { + Status = AcpiDisableEvent(i, ACPI_EVENT_FIXED, 0); + if (ACPI_FAILURE (Status)) + { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Failed to disable fixed event %d.\n", i)); + } + } + + /* + * Disable all GPEs + */ + for (i = 0; i < AcpiGbl_GpeNumberMax; i++) + { + if (AcpiEvGetGpeNumberIndex(i) != ACPI_GPE_INVALID) + { + Status = AcpiHwDisableGpe(i); + if (ACPI_FAILURE (Status)) + { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Failed to disable GPE %d.\n", i)); + } + } + } + + /* + * Remove SCI handler + */ + Status = AcpiEvRemoveSciHandler(); + if (ACPI_FAILURE(Status)) + { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unable to remove SCI handler.\n")); + } + + /* + * Return to original mode if necessary + */ + if (AcpiGbl_OriginalMode == ACPI_SYS_MODE_LEGACY) + { + Status = AcpiDisable (); + if (ACPI_FAILURE (Status)) + { + ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "AcpiDisable failed.\n")); + } + } /* * Free global tables, etc. diff --git a/sys/contrib/dev/acpica/evregion.c b/sys/contrib/dev/acpica/evregion.c index 9a73be0..67ecc9f6 100644 --- a/sys/contrib/dev/acpica/evregion.c +++ b/sys/contrib/dev/acpica/evregion.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evregion - ACPI AddressSpace (OpRegion) handler dispatch - * $Revision: 134 $ + * $Revision: 135 $ * *****************************************************************************/ @@ -126,7 +126,6 @@ ACPI_MODULE_NAME ("evregion") - /******************************************************************************* * * FUNCTION: AcpiEvInitAddressSpaces diff --git a/sys/contrib/dev/acpica/evrgnini.c b/sys/contrib/dev/acpica/evrgnini.c index 76890f4..b9566d7 100644 --- a/sys/contrib/dev/acpica/evrgnini.c +++ b/sys/contrib/dev/acpica/evrgnini.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evrgnini- ACPI AddressSpace (OpRegion) init - * $Revision: 62 $ + * $Revision: 63 $ * *****************************************************************************/ @@ -303,7 +303,7 @@ AcpiEvPciConfigRegionSetup ( Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, Node, &Temp); /* - * The default is zero, and since the allocation above zeroed + * The default is zero, and since the allocation above zeroed * the data, just do nothing on failure. */ if (ACPI_SUCCESS (Status)) diff --git a/sys/contrib/dev/acpica/evxface.c b/sys/contrib/dev/acpica/evxface.c index 4444070..cf8502c 100644 --- a/sys/contrib/dev/acpica/evxface.c +++ b/sys/contrib/dev/acpica/evxface.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evxface - External interfaces for ACPI events - * $Revision: 129 $ + * $Revision: 130 $ * *****************************************************************************/ @@ -126,7 +126,6 @@ ACPI_MODULE_NAME ("evxface") - /******************************************************************************* * * FUNCTION: AcpiInstallFixedEventHandler diff --git a/sys/contrib/dev/acpica/evxfevnt.c b/sys/contrib/dev/acpica/evxfevnt.c index 919e5da..9e70832 100644 --- a/sys/contrib/dev/acpica/evxfevnt.c +++ b/sys/contrib/dev/acpica/evxfevnt.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: evxfevnt - External Interfaces, ACPI event disable/enable - * $Revision: 55 $ + * $Revision: 57 $ * *****************************************************************************/ @@ -145,17 +145,15 @@ AcpiEnable (void) ACPI_FUNCTION_TRACE ("AcpiEnable"); - /* Make sure we have ACPI tables */ + /* Make sure we have the FADT*/ - if (!AcpiGbl_DSDT) + if (!AcpiGbl_FADT) { - ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "No ACPI tables present!\n")); + ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "No FADT information present!\n")); return_ACPI_STATUS (AE_NO_ACPI_TABLES); } - AcpiGbl_OriginalMode = AcpiHwGetMode (); - - if (AcpiGbl_OriginalMode == ACPI_SYS_MODE_ACPI) + if (AcpiHwGetMode() == ACPI_SYS_MODE_ACPI) { ACPI_DEBUG_PRINT ((ACPI_DB_OK, "Already in ACPI mode.\n")); } @@ -185,8 +183,7 @@ AcpiEnable (void) * * RETURN: Status * - * DESCRIPTION: Returns the system to original ACPI/legacy mode, and - * uninstalls the SCI interrupt handler. + * DESCRIPTION: Transfers the system into LEGACY mode. * ******************************************************************************/ @@ -198,22 +195,30 @@ AcpiDisable (void) ACPI_FUNCTION_TRACE ("AcpiDisable"); + if (!AcpiGbl_FADT) + { + ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "No FADT information present!\n")); + return_ACPI_STATUS (AE_NO_ACPI_TABLES); + } - if (AcpiHwGetMode () != AcpiGbl_OriginalMode) + if (AcpiHwGetMode() == ACPI_SYS_MODE_LEGACY) { - /* Restore original mode */ + ACPI_DEBUG_PRINT ((ACPI_DB_OK, "Already in LEGACY mode.\n")); + } + else + { + /* Transition to LEGACY mode */ + Status = AcpiHwSetMode (ACPI_SYS_MODE_LEGACY); - Status = AcpiHwSetMode (AcpiGbl_OriginalMode); if (ACPI_FAILURE (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Unable to transition to original mode")); + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Could not transition to LEGACY mode.")); return_ACPI_STATUS (Status); } - } - /* Unload the SCI interrupt handler */ + ACPI_DEBUG_PRINT ((ACPI_DB_OK, "Transition to LEGACY mode successful\n")); + } - Status = AcpiEvRemoveSciHandler (); return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/exdump.c b/sys/contrib/dev/acpica/exdump.c index 62cf206..9f374d0 100644 --- a/sys/contrib/dev/acpica/exdump.c +++ b/sys/contrib/dev/acpica/exdump.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exdump - Interpreter debug output routines - * $Revision: 157 $ + * $Revision: 159 $ * *****************************************************************************/ @@ -130,7 +130,7 @@ * The following routines are used for debug output only */ -#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) /***************************************************************************** * @@ -155,7 +155,6 @@ AcpiExDumpOperand ( UINT16 ElementIndex; - ACPI_FUNCTION_NAME ("ExDumpOperand") diff --git a/sys/contrib/dev/acpica/exfldio.c b/sys/contrib/dev/acpica/exfldio.c index 02f646d..60c3f7b 100644 --- a/sys/contrib/dev/acpica/exfldio.c +++ b/sys/contrib/dev/acpica/exfldio.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exfldio - Aml Field I/O - * $Revision: 87 $ + * $Revision: 88 $ * *****************************************************************************/ @@ -160,7 +160,7 @@ AcpiExSetupRegion ( if (ACPI_GET_OBJECT_TYPE (RgnDesc) != ACPI_TYPE_REGION) { ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Needed Region, found type %X (%s)\n", - ACPI_GET_OBJECT_TYPE (RgnDesc), + ACPI_GET_OBJECT_TYPE (RgnDesc), AcpiUtGetObjectTypeName (RgnDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); diff --git a/sys/contrib/dev/acpica/exmisc.c b/sys/contrib/dev/acpica/exmisc.c index 4091a95..2b23b38 100644 --- a/sys/contrib/dev/acpica/exmisc.c +++ b/sys/contrib/dev/acpica/exmisc.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes - * $Revision: 107 $ + * $Revision: 108 $ * *****************************************************************************/ @@ -191,7 +191,7 @@ AcpiExGetObjectReference ( case ACPI_DESC_TYPE_NAMED: - /* + /* * A named reference that has already been resolved to a Node */ ReferencedObj = ObjDesc; @@ -354,7 +354,7 @@ AcpiExDoConcatenate ( /* * There are three cases to handle: - * + * * 1) Two Integers concatenated to produce a new Buffer * 2) Two Strings concatenated to produce a new String * 3) Two Buffers concatenated to produce a new Buffer diff --git a/sys/contrib/dev/acpica/exoparg1.c b/sys/contrib/dev/acpica/exoparg1.c index eca5036..08f2348 100644 --- a/sys/contrib/dev/acpica/exoparg1.c +++ b/sys/contrib/dev/acpica/exoparg1.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exoparg1 - AML execution - opcodes with 1 argument - * $Revision: 141 $ + * $Revision: 142 $ * *****************************************************************************/ @@ -306,7 +306,6 @@ AcpiExOpcode_1A_1T_1R ( ACPI_FUNCTION_TRACE_STR ("ExOpcode_1A_1T_1R", AcpiPsGetOpcodeName (WalkState->Opcode)); - /* Examine the AML opcode */ switch (WalkState->Opcode) @@ -894,8 +893,8 @@ AcpiExOpcode_1A_0T_1R ( * 2) Dereference the node to an actual object. Could be a Field, so we nee * to resolve the node to a value. */ - Status = AcpiNsGetNodeByPath (Operand[0]->String.Pointer, - WalkState->ScopeInfo->Scope.Node, ACPI_NS_SEARCH_PARENT, + Status = AcpiNsGetNodeByPath (Operand[0]->String.Pointer, + WalkState->ScopeInfo->Scope.Node, ACPI_NS_SEARCH_PARENT, ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ReturnDesc)); if (ACPI_FAILURE (Status)) { @@ -946,7 +945,7 @@ AcpiExOpcode_1A_0T_1R ( TempDesc = Operand[0]->Reference.Object; /* - * Create a new object that contains one element of the + * Create a new object that contains one element of the * buffer -- the element pointed to by the index. * * NOTE: index into a buffer is NOT a pointer to a @@ -973,7 +972,7 @@ AcpiExOpcode_1A_0T_1R ( case ACPI_TYPE_PACKAGE: /* - * Return the referenced element of the package. We must add + * Return the referenced element of the package. We must add * another reference to the referenced object, however. */ ReturnDesc = *(Operand[0]->Reference.Where); diff --git a/sys/contrib/dev/acpica/exoparg2.c b/sys/contrib/dev/acpica/exoparg2.c index 12f1947..bd70810 100644 --- a/sys/contrib/dev/acpica/exoparg2.c +++ b/sys/contrib/dev/acpica/exoparg2.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: exoparg2 - AML execution - opcodes with 2 arguments - * $Revision: 109 $ + * $Revision: 110 $ * *****************************************************************************/ @@ -175,7 +175,7 @@ AcpiExOpcode_2A_0T_0R ( ACPI_STATUS Status = AE_OK; - ACPI_FUNCTION_TRACE_STR ("ExOpcode_2A_0T_0R", + ACPI_FUNCTION_TRACE_STR ("ExOpcode_2A_0T_0R", AcpiPsGetOpcodeName (WalkState->Opcode)); @@ -214,7 +214,7 @@ AcpiExOpcode_2A_0T_0R ( default: - ACPI_REPORT_ERROR (("AcpiExOpcode_2A_0T_0R: Unknown opcode %X\n", + ACPI_REPORT_ERROR (("AcpiExOpcode_2A_0T_0R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; } @@ -647,7 +647,7 @@ AcpiExOpcode_2A_0T_1R ( default: - ACPI_REPORT_ERROR (("AcpiExOpcode_2A_0T_1R: Unknown opcode %X\n", + ACPI_REPORT_ERROR (("AcpiExOpcode_2A_0T_1R: Unknown opcode %X\n", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; diff --git a/sys/contrib/dev/acpica/exprep.c b/sys/contrib/dev/acpica/exprep.c index f0aa081..2aeb7eed 100644 --- a/sys/contrib/dev/acpica/exprep.c +++ b/sys/contrib/dev/acpica/exprep.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exprep - ACPI AML (p-code) execution - field prep utilities - * $Revision: 118 $ + * $Revision: 119 $ * *****************************************************************************/ @@ -303,17 +303,17 @@ AcpiExPrepCommonFieldObject ( * two pieces of information - the width of each field access and the * necessary ByteAlignment (address granularity) of the access. * - * For AnyAcc, the AccessBitWidth is the largest width that is both + * For AnyAcc, the AccessBitWidth is the largest width that is both * necessary and possible in an attempt to access the whole field in one - * I/O operation. However, for AnyAcc, the ByteAlignment is always one + * I/O operation. However, for AnyAcc, the ByteAlignment is always one * byte. * * For all Buffer Fields, the ByteAlignment is always one byte. * - * For all other access types (Byte, Word, Dword, Qword), the Bitwidth is + * For all other access types (Byte, Word, Dword, Qword), the Bitwidth is * the same (equivalent) as the ByteAlignment. */ - AccessBitWidth = AcpiExDecodeFieldAccess (ObjDesc, FieldFlags, + AccessBitWidth = AcpiExDecodeFieldAccess (ObjDesc, FieldFlags, &ByteAlignment); if (!AccessBitWidth) { @@ -322,26 +322,26 @@ AcpiExPrepCommonFieldObject ( /* Setup width (access granularity) fields */ - ObjDesc->CommonField.AccessByteWidth = (UINT8) + ObjDesc->CommonField.AccessByteWidth = (UINT8) ACPI_DIV_8 (AccessBitWidth); /* 1, 2, 4, 8 */ /* - * BaseByteOffset is the address of the start of the field within the - * region. It is the byte address of the first *datum* (field-width data - * unit) of the field. (i.e., the first datum that contains at least the + * BaseByteOffset is the address of the start of the field within the + * region. It is the byte address of the first *datum* (field-width data + * unit) of the field. (i.e., the first datum that contains at least the * first *bit* of the field.) * - * Note: ByteAlignment is always either equal to the AccessBitWidth or 8 - * (Byte access), and it defines the addressing granularity of the parent + * Note: ByteAlignment is always either equal to the AccessBitWidth or 8 + * (Byte access), and it defines the addressing granularity of the parent * region or buffer. */ - NearestByteAddress = + NearestByteAddress = ACPI_ROUND_BITS_DOWN_TO_BYTES (FieldBitPosition); - ObjDesc->CommonField.BaseByteOffset = + ObjDesc->CommonField.BaseByteOffset = ACPI_ROUND_DOWN (NearestByteAddress, ByteAlignment); /* - * StartFieldBitOffset is the offset of the first bit of the field within + * StartFieldBitOffset is the offset of the first bit of the field within * a field datum. */ ObjDesc->CommonField.StartFieldBitOffset = (UINT8) @@ -349,24 +349,24 @@ AcpiExPrepCommonFieldObject ( /* * Valid bits -- the number of bits that compose a partial datum, - * 1) At the end of the field within the region (arbitrary starting bit + * 1) At the end of the field within the region (arbitrary starting bit * offset) - * 2) At the end of a buffer used to contain the field (starting offset + * 2) At the end of a buffer used to contain the field (starting offset * always zero) */ - ObjDesc->CommonField.EndFieldValidBits = (UINT8) + ObjDesc->CommonField.EndFieldValidBits = (UINT8) ((ObjDesc->CommonField.StartFieldBitOffset + FieldBitLength) % AccessBitWidth); /* StartBufferBitOffset always = 0 */ - ObjDesc->CommonField.EndBufferValidBits = (UINT8) + ObjDesc->CommonField.EndBufferValidBits = (UINT8) (FieldBitLength % AccessBitWidth); /* - * DatumValidBits is the number of valid field bits in the first + * DatumValidBits is the number of valid field bits in the first * field datum. */ - ObjDesc->CommonField.DatumValidBits = (UINT8) + ObjDesc->CommonField.DatumValidBits = (UINT8) (AccessBitWidth - ObjDesc->CommonField.StartFieldBitOffset); /* @@ -482,11 +482,11 @@ AcpiExPrepFieldValue ( AcpiUtAddReference (ObjDesc->BankField.RegionObj); AcpiUtAddReference (ObjDesc->BankField.BankObj); - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, + ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Bank Field: BitOff=%X Off=%X Gran=%X Region %p BankReg %p\n", - ObjDesc->BankField.StartFieldBitOffset, + ObjDesc->BankField.StartFieldBitOffset, ObjDesc->BankField.BaseByteOffset, - ObjDesc->Field.AccessByteWidth, + ObjDesc->Field.AccessByteWidth, ObjDesc->BankField.RegionObj, ObjDesc->BankField.BankObj)); break; @@ -496,7 +496,7 @@ AcpiExPrepFieldValue ( ObjDesc->IndexField.IndexObj = AcpiNsGetAttachedObject (Info->RegisterNode); ObjDesc->IndexField.DataObj = AcpiNsGetAttachedObject (Info->DataRegisterNode); - ObjDesc->IndexField.Value = (UINT32) + ObjDesc->IndexField.Value = (UINT32) (Info->FieldBitPosition / ACPI_MUL_8 (ObjDesc->Field.AccessByteWidth)); if (!ObjDesc->IndexField.DataObj || !ObjDesc->IndexField.IndexObj) @@ -510,11 +510,11 @@ AcpiExPrepFieldValue ( AcpiUtAddReference (ObjDesc->IndexField.DataObj); AcpiUtAddReference (ObjDesc->IndexField.IndexObj); - ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, + ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "IndexField: bitoff=%X off=%X gran=%X Index %p Data %p\n", - ObjDesc->IndexField.StartFieldBitOffset, + ObjDesc->IndexField.StartFieldBitOffset, ObjDesc->IndexField.BaseByteOffset, - ObjDesc->Field.AccessByteWidth, + ObjDesc->Field.AccessByteWidth, ObjDesc->IndexField.IndexObj, ObjDesc->IndexField.DataObj)); break; diff --git a/sys/contrib/dev/acpica/exregion.c b/sys/contrib/dev/acpica/exregion.c index 4339f10..c42e566 100644 --- a/sys/contrib/dev/acpica/exregion.c +++ b/sys/contrib/dev/acpica/exregion.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exregion - ACPI default OpRegion (address space) handlers - * $Revision: 79 $ + * $Revision: 80 $ * *****************************************************************************/ @@ -225,7 +225,7 @@ AcpiExSystemMemorySpaceHandler ( MemInfo->MappedLength); } - /* + /* * Don't attempt to map memory beyond the end of the region, and * constrain the maximum mapping size to something reasonable. */ @@ -234,7 +234,7 @@ AcpiExSystemMemorySpaceHandler ( { WindowSize = SYSMEM_REGION_WINDOW_SIZE; } - + /* Create a new mapping starting at the address given */ Status = AcpiOsMapMemory (Address, WindowSize, @@ -264,7 +264,7 @@ AcpiExSystemMemorySpaceHandler ( "SystemMemory %d (%d width) Address=%8.8X%8.8X\n", Function, BitWidth, ACPI_HIDWORD (Address), ACPI_LODWORD (Address))); - /* + /* * Perform the memory read or write * * Note: For machines that do not support non-aligned transfers, the target @@ -323,7 +323,7 @@ AcpiExSystemMemorySpaceHandler ( *(UINT64 *) LogicalAddrPtr = (UINT64) *Value; break; #endif - + default: /* BitWidth was already validated */ break; diff --git a/sys/contrib/dev/acpica/exresop.c b/sys/contrib/dev/acpica/exresop.c index b3da7c5..a3702d3 100644 --- a/sys/contrib/dev/acpica/exresop.c +++ b/sys/contrib/dev/acpica/exresop.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exresop - AML Interpreter operand/object resolution - * $Revision: 54 $ + * $Revision: 55 $ * *****************************************************************************/ @@ -201,8 +201,8 @@ AcpiExCheckObjectType ( * target operator. * * Each 5-bit group in ArgTypes represents one required - * operand and indicates the required Type. The corresponding operand - * will be converted to the required type if possible, otherwise we + * operand and indicates the required Type. The corresponding operand + * will be converted to the required type if possible, otherwise we * abort with an exception. * ******************************************************************************/ diff --git a/sys/contrib/dev/acpica/exstore.c b/sys/contrib/dev/acpica/exstore.c index 97ec5e6..d89abba 100644 --- a/sys/contrib/dev/acpica/exstore.c +++ b/sys/contrib/dev/acpica/exstore.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exstore - AML Interpreter object store support - * $Revision: 168 $ + * $Revision: 169 $ * *****************************************************************************/ @@ -186,7 +186,7 @@ AcpiExStore ( /* Destination object must be a Reference or a Constant object */ switch (ACPI_GET_OBJECT_TYPE (DestDesc)) - { + { case INTERNAL_TYPE_REFERENCE: break; diff --git a/sys/contrib/dev/acpica/exutils.c b/sys/contrib/dev/acpica/exutils.c index fad89f8..0e75d9d 100644 --- a/sys/contrib/dev/acpica/exutils.c +++ b/sys/contrib/dev/acpica/exutils.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: exutils - interpreter/scanner utilities - * $Revision: 102 $ + * $Revision: 103 $ * *****************************************************************************/ @@ -363,7 +363,8 @@ AcpiExReleaseGlobalLock ( { /* Report the error, but there isn't much else we can do */ - ACPI_REPORT_ERROR (("Could not release ACPI Global Lock\n")); + ACPI_REPORT_ERROR (("Could not release ACPI Global Lock, %s\n", + AcpiFormatException (Status))); } } diff --git a/sys/contrib/dev/acpica/hwacpi.c b/sys/contrib/dev/acpica/hwacpi.c index 8391e55..9dffda3 100644 --- a/sys/contrib/dev/acpica/hwacpi.c +++ b/sys/contrib/dev/acpica/hwacpi.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: hwacpi - ACPI Hardware Initialization/Mode Interface - * $Revision: 58 $ + * $Revision: 60 $ * *****************************************************************************/ @@ -190,13 +190,36 @@ AcpiHwSetMode ( ACPI_FUNCTION_TRACE ("HwSetMode"); + /* + * ACPI 2.0 clarified that if SMI_CMD in FADT is zero, + * system does not support mode transition. + */ + if (!AcpiGbl_FADT->SmiCmd) + { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "No SMI_CMD in FADT, mode transition failed.\n")); + return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); + } + + /* + * ACPI 2.0 clarified the meaning of ACPI_ENABLE and ACPI_DISABLE + * in FADT: If it is zero, enabling or disabling is not supported. + * As old systems may have used zero for mode transition, + * we make sure both the numbers are zero to determine these + * transitions are not supported. + */ + if (!AcpiGbl_FADT->AcpiEnable && !AcpiGbl_FADT->AcpiDisable) + { + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "No mode transition supported in this system.\n")); + return_ACPI_STATUS (AE_OK); + } + switch (Mode) { case ACPI_SYS_MODE_ACPI: /* BIOS should have disabled ALL fixed and GP events */ - Status = AcpiOsWritePort (AcpiGbl_FADT->SmiCmd, + Status = AcpiOsWritePort (AcpiGbl_FADT->SmiCmd, (ACPI_INTEGER) AcpiGbl_FADT->AcpiEnable, 8); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Attempting to enable ACPI mode\n")); break; @@ -207,7 +230,7 @@ AcpiHwSetMode ( * BIOS should clear all fixed status bits and restore fixed event * enable bits to default */ - Status = AcpiOsWritePort (AcpiGbl_FADT->SmiCmd, + Status = AcpiOsWritePort (AcpiGbl_FADT->SmiCmd, (ACPI_INTEGER) AcpiGbl_FADT->AcpiDisable, 8); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Attempting to enable Legacy (non-ACPI) mode\n")); @@ -231,12 +254,13 @@ AcpiHwSetMode ( { Status = AE_NO_HARDWARE_RESPONSE; - if (AcpiHwGetMode() == Mode) { + if (AcpiHwGetMode() == Mode) + { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Mode %X successfully enabled\n", Mode)); Status = AE_OK; break; } - AcpiOsStall(1000); + AcpiOsStall(1000); Retry--; } diff --git a/sys/contrib/dev/acpica/hwgpe.c b/sys/contrib/dev/acpica/hwgpe.c index c5cc7f7..cf822a5 100644 --- a/sys/contrib/dev/acpica/hwgpe.c +++ b/sys/contrib/dev/acpica/hwgpe.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Module Name: hwgpe - Low level GPE enable/disable/clear functions - * $Revision: 41 $ + * $Revision: 42 $ * *****************************************************************************/ @@ -179,14 +179,14 @@ AcpiHwEnableGpe ( * Read the current value of the register, set the appropriate bit * to enable the GPE, and write out the new register. */ - Status = AcpiHwLowLevelRead (8, &InByte, + Status = AcpiHwLowLevelRead (8, &InByte, &AcpiGbl_GpeRegisterInfo[RegisterIndex].EnableAddress, 0); if (ACPI_FAILURE (Status)) { return (Status); } - Status = AcpiHwLowLevelWrite (8, (InByte | BitMask), + Status = AcpiHwLowLevelWrite (8, (InByte | BitMask), &AcpiGbl_GpeRegisterInfo[RegisterIndex].EnableAddress, 0); return (Status); @@ -276,7 +276,7 @@ AcpiHwDisableGpe ( return (Status); } - Status = AcpiHwLowLevelWrite (8, (InByte & ~BitMask), + Status = AcpiHwLowLevelWrite (8, (InByte & ~BitMask), &AcpiGbl_GpeRegisterInfo[RegisterIndex].EnableAddress, 0); if (ACPI_FAILURE (Status)) { @@ -363,7 +363,7 @@ AcpiHwClearGpe ( * Write a one to the appropriate bit in the status register to * clear this GPE. */ - Status = AcpiHwLowLevelWrite (8, BitMask, + Status = AcpiHwLowLevelWrite (8, BitMask, &AcpiGbl_GpeRegisterInfo[RegisterIndex].StatusAddress, 0); return (Status); @@ -486,7 +486,7 @@ AcpiHwDisableNonWakeupGpes ( * Read the enabled status of all GPEs. We * will be using it to restore all the GPEs later. */ - Status = AcpiHwLowLevelRead (8, &InValue, + Status = AcpiHwLowLevelRead (8, &InValue, &GpeRegisterInfo->EnableAddress, 0); if (ACPI_FAILURE (Status)) { @@ -498,7 +498,7 @@ AcpiHwDisableNonWakeupGpes ( /* * Disable all GPEs except wakeup GPEs. */ - Status = AcpiHwLowLevelWrite (8, GpeRegisterInfo->WakeEnable, + Status = AcpiHwLowLevelWrite (8, GpeRegisterInfo->WakeEnable, &GpeRegisterInfo->EnableAddress, 0); if (ACPI_FAILURE (Status)) { diff --git a/sys/contrib/dev/acpica/hwregs.c b/sys/contrib/dev/acpica/hwregs.c index fb2b8e4..164a44f 100644 --- a/sys/contrib/dev/acpica/hwregs.c +++ b/sys/contrib/dev/acpica/hwregs.c @@ -3,7 +3,7 @@ * * Module Name: hwregs - Read/write access functions for the various ACPI * control and status registers. - * $Revision: 133 $ + * $Revision: 134 $ * ******************************************************************************/ @@ -305,7 +305,7 @@ AcpiGetSleepTypeData ( * FUNCTION: AcpiHwGetRegisterBitMask * * PARAMETERS: RegisterId - Index of ACPI Register to access - * + * * RETURN: The bit mask to be used when accessing the register * * DESCRIPTION: Map RegisterId into a register bit mask. @@ -374,7 +374,7 @@ AcpiGetRegister ( } } - Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, + Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, BitRegInfo->ParentRegister, &RegisterValue); if (Flags & ACPI_MTX_LOCK) @@ -386,7 +386,7 @@ AcpiGetRegister ( { /* Normalize the value that was read */ - RegisterValue = ((RegisterValue & BitRegInfo->AccessBitMask) + RegisterValue = ((RegisterValue & BitRegInfo->AccessBitMask) >> BitRegInfo->BitPosition); *ReturnValue = RegisterValue; @@ -447,7 +447,7 @@ AcpiSetRegister ( /* Always do a register read first so we can insert the new bits */ - Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, + Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, BitRegInfo->ParentRegister, &RegisterValue); if (ACPI_FAILURE (Status)) { @@ -471,11 +471,11 @@ AcpiSetRegister ( * information is the single bit we're interested in, all others should * be written as 0 so they will be left unchanged */ - Value = ACPI_REGISTER_PREPARE_BITS (Value, + Value = ACPI_REGISTER_PREPARE_BITS (Value, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask); if (Value) { - Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, + Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_STATUS, (UINT16) Value); RegisterValue = 0; } @@ -484,10 +484,10 @@ AcpiSetRegister ( case ACPI_REGISTER_PM1_ENABLE: - ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, + ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask, Value); - Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, + Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM1_ENABLE, (UINT16) RegisterValue); break; @@ -501,7 +501,7 @@ AcpiSetRegister ( */ ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM1 control: Read %X\n", RegisterValue)); - ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, + ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask, Value); Status = AcpiHwRegisterWrite (ACPI_MTX_DO_NOT_LOCK, RegisterId, @@ -511,7 +511,7 @@ AcpiSetRegister ( case ACPI_REGISTER_PM2_CONTROL: - Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, + Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK, ACPI_REGISTER_PM2_CONTROL, &RegisterValue); if (ACPI_FAILURE (Status)) { @@ -519,11 +519,11 @@ AcpiSetRegister ( } ACPI_DEBUG_PRINT ((ACPI_DB_IO, "PM2 control: Read %X from %8.8X%8.8X\n", - RegisterValue, + RegisterValue, ACPI_HIDWORD (ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address)), ACPI_LODWORD (ACPI_GET_ADDRESS (AcpiGbl_FADT->XPm2CntBlk.Address)))); - ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, + ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask, Value); ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %4.4X to %8.8X%8.8X\n", @@ -847,7 +847,7 @@ AcpiHwLowLevelRead ( { case ACPI_ADR_SPACE_SYSTEM_MEMORY: - MemAddress = (ACPI_GET_ADDRESS (Reg->Address) + MemAddress = (ACPI_GET_ADDRESS (Reg->Address) + (ACPI_PHYSICAL_ADDRESS) Offset); Status = AcpiOsReadMemory (MemAddress, Value, Width); @@ -856,7 +856,7 @@ AcpiHwLowLevelRead ( case ACPI_ADR_SPACE_SYSTEM_IO: - IoAddress = (ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + IoAddress = (ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + (ACPI_PHYSICAL_ADDRESS) Offset); Status = AcpiOsReadPort (IoAddress, Value, Width); @@ -937,7 +937,7 @@ AcpiHwLowLevelWrite ( { case ACPI_ADR_SPACE_SYSTEM_MEMORY: - MemAddress = (ACPI_GET_ADDRESS (Reg->Address) + MemAddress = (ACPI_GET_ADDRESS (Reg->Address) + (ACPI_PHYSICAL_ADDRESS) Offset); Status = AcpiOsWriteMemory (MemAddress, (ACPI_INTEGER) Value, Width); @@ -946,7 +946,7 @@ AcpiHwLowLevelWrite ( case ACPI_ADR_SPACE_SYSTEM_IO: - IoAddress = (ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + IoAddress = (ACPI_IO_ADDRESS) (ACPI_GET_ADDRESS (Reg->Address) + (ACPI_PHYSICAL_ADDRESS) Offset); Status = AcpiOsWritePort (IoAddress, (ACPI_INTEGER) Value, Width); @@ -959,7 +959,7 @@ AcpiHwLowLevelWrite ( PciId.Bus = 0; PciId.Device = ACPI_PCI_DEVICE (ACPI_GET_ADDRESS (Reg->Address)); PciId.Function = ACPI_PCI_FUNCTION (ACPI_GET_ADDRESS (Reg->Address)); - PciRegister = (UINT16) (ACPI_PCI_REGISTER (ACPI_GET_ADDRESS (Reg->Address)) + PciRegister = (UINT16) (ACPI_PCI_REGISTER (ACPI_GET_ADDRESS (Reg->Address)) + Offset); Status = AcpiOsWritePciConfiguration (&PciId, PciRegister, (ACPI_INTEGER) Value, Width); diff --git a/sys/contrib/dev/acpica/hwsleep.c b/sys/contrib/dev/acpica/hwsleep.c index f53f33b..92ef1e9 100644 --- a/sys/contrib/dev/acpica/hwsleep.c +++ b/sys/contrib/dev/acpica/hwsleep.c @@ -2,7 +2,7 @@ /****************************************************************************** * * Name: hwsleep.c - ACPI Hardware Sleep/Wake Interface - * $Revision: 45 $ + * $Revision: 46 $ * *****************************************************************************/ @@ -146,12 +146,12 @@ AcpiSetFirmwareWakingVector ( if (AcpiGbl_CommonFACS.VectorWidth == 32) { - *(ACPI_CAST_PTR (UINT32, AcpiGbl_CommonFACS.FirmwareWakingVector)) + *(ACPI_CAST_PTR (UINT32, AcpiGbl_CommonFACS.FirmwareWakingVector)) = (UINT32) PhysicalAddress; } else { - *AcpiGbl_CommonFACS.FirmwareWakingVector + *AcpiGbl_CommonFACS.FirmwareWakingVector = PhysicalAddress; } @@ -190,12 +190,12 @@ AcpiGetFirmwareWakingVector ( if (AcpiGbl_CommonFACS.VectorWidth == 32) { - *PhysicalAddress = (ACPI_PHYSICAL_ADDRESS) + *PhysicalAddress = (ACPI_PHYSICAL_ADDRESS) *(ACPI_CAST_PTR (UINT32, AcpiGbl_CommonFACS.FirmwareWakingVector)); } else { - *PhysicalAddress = + *PhysicalAddress = *AcpiGbl_CommonFACS.FirmwareWakingVector; } @@ -410,7 +410,7 @@ AcpiEnterSleepState ( /* Wait until we enter sleep state */ - do + do { Status = AcpiGetRegister (ACPI_BITREG_WAKE_STATUS, &InValue, ACPI_MTX_LOCK); if (ACPI_FAILURE (Status)) diff --git a/sys/contrib/dev/acpica/nsaccess.c b/sys/contrib/dev/acpica/nsaccess.c index 3e05553..92594d0 100644 --- a/sys/contrib/dev/acpica/nsaccess.c +++ b/sys/contrib/dev/acpica/nsaccess.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nsaccess - Top-level functions for accessing ACPI namespace - * $Revision: 156 $ + * $Revision: 161 $ * ******************************************************************************/ @@ -216,6 +216,19 @@ AcpiNsRootInitialize (void) */ switch (InitVal->Type) { + case ACPI_TYPE_METHOD: + ObjDesc->Method.ParamCount = + (UINT8) ACPI_STRTOUL (InitVal->Val, NULL, 10); + ObjDesc->Common.Flags |= AOPOBJ_DATA_VALID; + +#if defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) + + /* Compiler cheats by putting parameter count in the OwnerID */ + + NewNode->OwnerId = ObjDesc->Method.ParamCount; +#endif + break; + case ACPI_TYPE_INTEGER: ObjDesc->Integer.Value = @@ -331,6 +344,7 @@ AcpiNsLookup ( ACPI_NAMESPACE_NODE **ReturnNode) { ACPI_STATUS Status; + NATIVE_CHAR *Path = Pathname; ACPI_NAMESPACE_NODE *PrefixNode; ACPI_NAMESPACE_NODE *CurrentNode = NULL; ACPI_NAMESPACE_NODE *ThisNode = NULL; @@ -338,7 +352,9 @@ AcpiNsLookup ( ACPI_NAME SimpleName; ACPI_OBJECT_TYPE TypeToCheckFor; ACPI_OBJECT_TYPE ThisSearchType; - UINT32 LocalFlags = Flags & ~ACPI_NS_ERROR_IF_FOUND; + UINT32 SearchParentFlag = ACPI_NS_SEARCH_PARENT; + UINT32 LocalFlags = Flags & ~(ACPI_NS_ERROR_IF_FOUND | + ACPI_NS_SEARCH_PARENT); ACPI_FUNCTION_TRACE ("NsLookup"); @@ -373,6 +389,23 @@ AcpiNsLookup ( else { PrefixNode = ScopeInfo->Scope.Node; + if (ACPI_GET_DESCRIPTOR_TYPE (PrefixNode) != ACPI_DESC_TYPE_NAMED) + { + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "[%p] Not a namespace node\n", + PrefixNode)); + return_ACPI_STATUS (AE_AML_INTERNAL); + } + + /* + * This node might not be a actual "scope" node (such as a + * Device/Method, etc.) It could be a Package or other object node. + * Backup up the tree to find the containing scope node. + */ + while (!AcpiNsOpensScope (PrefixNode->Type) && + PrefixNode->Type != ACPI_TYPE_ANY) + { + PrefixNode = AcpiNsGetParentNode (PrefixNode); + } } /* @@ -408,7 +441,7 @@ AcpiNsLookup ( NumSegments = 0; ThisNode = AcpiGbl_RootNode; - Pathname = ""; + Path = ""; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Null Pathname (Zero segments), Flags=%X\n", Flags)); @@ -428,25 +461,26 @@ AcpiNsLookup ( * Parent Prefixes (in which case the name's scope is relative * to the current scope). */ - if (*Pathname == (UINT8) AML_ROOT_PREFIX) + if (*Path == (UINT8) AML_ROOT_PREFIX) { /* Pathname is fully qualified, start from the root */ ThisNode = AcpiGbl_RootNode; + SearchParentFlag = ACPI_NS_NO_UPSEARCH; /* Point to name segment part */ - Pathname++; + Path++; - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching from root [%p]\n", - ThisNode)); + ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, + "Path is absolute from root [%p]\n", ThisNode)); } else { /* Pathname is relative to current scope, start there */ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Searching relative to pfx scope [%p]\n", + "Searching relative to prefix scope [%p]\n", PrefixNode)); /* @@ -454,13 +488,16 @@ AcpiNsLookup ( * the parent node for each prefix instance. */ ThisNode = PrefixNode; - while (*Pathname == (UINT8) AML_PARENT_PREFIX) + while (*Path == (UINT8) AML_PARENT_PREFIX) { + /* Name is fully qualified, no search rules apply */ + + SearchParentFlag = ACPI_NS_NO_UPSEARCH; /* * Point past this prefix to the name segment * part or the next Parent Prefix */ - Pathname++; + Path++; /* Backup to the parent node */ @@ -474,6 +511,12 @@ AcpiNsLookup ( return_ACPI_STATUS (AE_NOT_FOUND); } } + + if (SearchParentFlag == ACPI_NS_NO_UPSEARCH) + { + ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, + "Path is absolute with one or more carats\n")); + } } /* @@ -489,7 +532,7 @@ AcpiNsLookup ( * Examine the name prefix opcode, if any, to determine the number of * segments. */ - switch (*Pathname) + switch (*Path) { case 0: /* @@ -504,10 +547,14 @@ AcpiNsLookup ( case AML_DUAL_NAME_PREFIX: + /* More than one NameSeg, search rules do not apply */ + + SearchParentFlag = ACPI_NS_NO_UPSEARCH; + /* Two segments, point to first name segment */ NumSegments = 2; - Pathname++; + Path++; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Dual Pathname (2 segments, Flags=%X)\n", Flags)); @@ -515,11 +562,15 @@ AcpiNsLookup ( case AML_MULTI_NAME_PREFIX_OP: + /* More than one NameSeg, search rules do not apply */ + + SearchParentFlag = ACPI_NS_NO_UPSEARCH; + /* Extract segment count, point to first name segment */ - Pathname++; - NumSegments = (UINT32) (UINT8) *Pathname; - Pathname++; + Path++; + NumSegments = (UINT32) (UINT8) *Path; + Path++; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Multi Pathname (%d Segments, Flags=%X) \n", @@ -538,35 +589,53 @@ AcpiNsLookup ( break; } - ACPI_DEBUG_EXEC (AcpiNsPrintPathname (NumSegments, Pathname)); + ACPI_DEBUG_EXEC (AcpiNsPrintPathname (NumSegments, Path)); } + /* * Search namespace for each segment of the name. Loop through and - * verify/add each name segment. + * verify (or add to the namespace) each name segment. + * + * The object type is significant only at the last name + * segment. (We don't care about the types along the path, only + * the type of the final target object.) */ + ThisSearchType = ACPI_TYPE_ANY; CurrentNode = ThisNode; while (NumSegments && CurrentNode) { - /* - * Search for the current name segment under the current - * named object. The Type is significant only at the last name - * segment. (We don't care about the types along the path, only - * the type of the final target object.) - */ - ThisSearchType = ACPI_TYPE_ANY; NumSegments--; if (!NumSegments) { + /* + * This is the last segment, enable typechecking + */ ThisSearchType = Type; - LocalFlags = Flags; + + /* + * Only allow automatic parent search (search rules) if the caller + * requested it AND we have a single, non-fully-qualified NameSeg + */ + if ((SearchParentFlag != ACPI_NS_NO_UPSEARCH) && + (Flags & ACPI_NS_SEARCH_PARENT)) + { + LocalFlags |= ACPI_NS_SEARCH_PARENT; + } + + /* Set error flag according to caller */ + + if (Flags & ACPI_NS_ERROR_IF_FOUND) + { + LocalFlags |= ACPI_NS_ERROR_IF_FOUND; + } } /* Extract one ACPI name from the front of the pathname */ - ACPI_MOVE_UNALIGNED32_TO_32 (&SimpleName, Pathname); + ACPI_MOVE_UNALIGNED32_TO_32 (&SimpleName, Path); - /* Try to find the ACPI name */ + /* Try to find the single (4 character) ACPI name */ Status = AcpiNsSearchAndEnter (SimpleName, WalkState, CurrentNode, InterpreterMode, ThisSearchType, LocalFlags, &ThisNode); @@ -578,7 +647,8 @@ AcpiNsLookup ( ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Name [%4.4s] not found in scope [%4.4s] %p\n", - (char *) &SimpleName, (char *) &CurrentNode->Name, CurrentNode)); + (char *) &SimpleName, (char *) &CurrentNode->Name, + CurrentNode)); } return_ACPI_STATUS (Status); @@ -627,7 +697,7 @@ AcpiNsLookup ( /* Point to next name segment and make this node current */ - Pathname += ACPI_NAME_SIZE; + Path += ACPI_NAME_SIZE; CurrentNode = ThisNode; } @@ -649,7 +719,7 @@ AcpiNsLookup ( } ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, - "Setting current scope to [%4.4s] (%p)\n", + "Setting current scope to [%4.4s] (%p)\n", ThisNode->Name.Ascii, ThisNode)); } } diff --git a/sys/contrib/dev/acpica/nsdump.c b/sys/contrib/dev/acpica/nsdump.c index e8f3768..5194477 100644 --- a/sys/contrib/dev/acpica/nsdump.c +++ b/sys/contrib/dev/acpica/nsdump.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsdump - table dumping routines for debug - * $Revision: 137 $ + * $Revision: 139 $ * *****************************************************************************/ @@ -125,7 +125,7 @@ #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsdump") -#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) /******************************************************************************* @@ -369,7 +369,7 @@ AcpiNsDumpOneObject ( switch (Type) { case ACPI_TYPE_PROCESSOR: - + AcpiOsPrintf (" ID %hd Addr %.4X Len %.4X\n", ObjDesc->Processor.ProcId, ObjDesc->Processor.Address, @@ -378,13 +378,13 @@ AcpiNsDumpOneObject ( case ACPI_TYPE_DEVICE: - + AcpiOsPrintf (" Notification object: %p", ObjDesc); break; case ACPI_TYPE_METHOD: - + AcpiOsPrintf (" Args %hd Len %.4X Aml %p \n", ObjDesc->Method.ParamCount, ObjDesc->Method.AmlLength, @@ -393,7 +393,7 @@ AcpiNsDumpOneObject ( case ACPI_TYPE_INTEGER: - + AcpiOsPrintf (" = %8.8X%8.8X\n", ACPI_HIDWORD (ObjDesc->Integer.Value), ACPI_LODWORD (ObjDesc->Integer.Value)); @@ -441,7 +441,7 @@ AcpiNsDumpOneObject ( case ACPI_TYPE_STRING: - + AcpiOsPrintf (" Len %.2X", ObjDesc->String.Length); if (ObjDesc->String.Length > 0) @@ -457,7 +457,7 @@ AcpiNsDumpOneObject ( case ACPI_TYPE_REGION: - + AcpiOsPrintf (" [%s]", AcpiUtGetRegionName (ObjDesc->Region.SpaceId)); if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID) { @@ -474,14 +474,14 @@ AcpiNsDumpOneObject ( case INTERNAL_TYPE_REFERENCE: - + AcpiOsPrintf (" [%s]\n", AcpiPsGetOpcodeName (ObjDesc->Reference.Opcode)); break; case ACPI_TYPE_BUFFER_FIELD: - + if (ObjDesc->BufferField.BufferObj && ObjDesc->BufferField.BufferObj->Buffer.Node) { @@ -492,14 +492,14 @@ AcpiNsDumpOneObject ( case INTERNAL_TYPE_REGION_FIELD: - + AcpiOsPrintf (" Rgn [%4.4s]", ObjDesc->CommonField.RegionObj->Region.Node->Name.Ascii); break; case INTERNAL_TYPE_BANK_FIELD: - + AcpiOsPrintf (" Rgn [%4.4s] Bnk [%4.4s]", ObjDesc->CommonField.RegionObj->Region.Node->Name.Ascii, ObjDesc->BankField.BankObj->CommonField.Node->Name.Ascii); @@ -507,7 +507,7 @@ AcpiNsDumpOneObject ( case INTERNAL_TYPE_INDEX_FIELD: - + AcpiOsPrintf (" Idx [%4.4s] Dat [%4.4s]", ObjDesc->IndexField.IndexObj->CommonField.Node->Name.Ascii, ObjDesc->IndexField.DataObj->CommonField.Node->Name.Ascii); @@ -515,7 +515,7 @@ AcpiNsDumpOneObject ( default: - + AcpiOsPrintf (" Object %p\n", ObjDesc); break; } @@ -534,7 +534,7 @@ AcpiNsDumpOneObject ( ObjDesc->CommonField.BitLength, ObjDesc->CommonField.AccessByteWidth); break; - + default: break; } @@ -750,7 +750,7 @@ AcpiNsDumpObjects ( Info.DisplayType = DisplayType; - (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, + (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, ACPI_NS_WALK_NO_UNLOCK, AcpiNsDumpOneObject, (void *) &Info, NULL); } diff --git a/sys/contrib/dev/acpica/nsdumpdv.c b/sys/contrib/dev/acpica/nsdumpdv.c index 2a61aeb..944cc72 100644 --- a/sys/contrib/dev/acpica/nsdumpdv.c +++ b/sys/contrib/dev/acpica/nsdumpdv.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsdump - table dumping routines for debug - * $Revision: 1 $ + * $Revision: 3 $ * *****************************************************************************/ @@ -126,7 +126,7 @@ ACPI_MODULE_NAME ("nsdumpdv") -#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) /******************************************************************************* * @@ -211,7 +211,7 @@ AcpiNsDumpRootDevices (void) ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "Display of all devices in the namespace:\n")); - Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, SysBusHandle, + Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, SysBusHandle, ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, AcpiNsDumpOneDevice, NULL, NULL); } diff --git a/sys/contrib/dev/acpica/nseval.c b/sys/contrib/dev/acpica/nseval.c index 5ac07b9..043da21 100644 --- a/sys/contrib/dev/acpica/nseval.c +++ b/sys/contrib/dev/acpica/nseval.c @@ -2,7 +2,7 @@ * * Module Name: nseval - Object evaluation interfaces -- includes control * method lookup and execution. - * $Revision: 117 $ + * $Revision: 118 $ * ******************************************************************************/ @@ -602,7 +602,7 @@ AcpiNsGetObjectValue ( { Status = AE_CTRL_RETURN_VALUE; *ReturnObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ResolvedNode); - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Returning object %p [%s]\n", + ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Returning object %p [%s]\n", *ReturnObjDesc, AcpiUtGetObjectTypeName (*ReturnObjDesc))); } } diff --git a/sys/contrib/dev/acpica/nsinit.c b/sys/contrib/dev/acpica/nsinit.c index 9a46ea6..d1569ce 100644 --- a/sys/contrib/dev/acpica/nsinit.c +++ b/sys/contrib/dev/acpica/nsinit.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsinit - namespace initialization - * $Revision: 47 $ + * $Revision: 49 $ * *****************************************************************************/ @@ -165,15 +165,15 @@ AcpiNsInitializeObjects ( &Info, NULL); if (ACPI_FAILURE (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "WalkNamespace failed! %s\n", + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "WalkNamespace failed! %s\n", AcpiFormatException (Status))); } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OK, "\nInitialized %hd/%hd Regions %hd/%hd Fields %hd/%hd Buffers %hd/%hd Packages (%hd nodes)\n", - Info.OpRegionInit, Info.OpRegionCount, - Info.FieldInit, Info.FieldCount, - Info.BufferInit, Info.BufferCount, + Info.OpRegionInit, Info.OpRegionCount, + Info.FieldInit, Info.FieldCount, + Info.BufferInit, Info.BufferCount, Info.PackageInit, Info.PackageCount, Info.ObjectCount)); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "%hd Control Methods found\n", Info.MethodCount)); @@ -226,7 +226,7 @@ AcpiNsInitializeDevices ( if (ACPI_FAILURE (Status)) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "WalkNamespace failed! %s\n", + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "WalkNamespace failed! %s\n", AcpiFormatException (Status))); } @@ -331,7 +331,7 @@ AcpiNsInitOneObject ( /* * Each of these types can contain executable AML code within - * the declaration. + * the declaration. */ switch (Type) { @@ -479,7 +479,7 @@ AcpiNsInitOneDevice ( { /* Ignore error and move on to next device */ - #ifdef ACPI_DEBUG + #ifdef ACPI_DEBUG_OUTPUT NATIVE_CHAR *ScopeName = AcpiNsGetExternalPathname (ObjHandle); ACPI_DEBUG_PRINT ((ACPI_DB_WARN, "%s._INI failed: %s\n", diff --git a/sys/contrib/dev/acpica/nsload.c b/sys/contrib/dev/acpica/nsload.c index 4bf6959..b644241 100644 --- a/sys/contrib/dev/acpica/nsload.c +++ b/sys/contrib/dev/acpica/nsload.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: nsload - namespace loading/expanding/contracting procedures - * $Revision: 57 $ + * $Revision: 58 $ * *****************************************************************************/ @@ -534,7 +534,6 @@ AcpiNsLoadNamespace ( } - /******************************************************************************* * * FUNCTION: AcpiNsDeleteSubtree diff --git a/sys/contrib/dev/acpica/nsnames.c b/sys/contrib/dev/acpica/nsnames.c index 670ce3a..09a51d2 100644 --- a/sys/contrib/dev/acpica/nsnames.c +++ b/sys/contrib/dev/acpica/nsnames.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nsnames - Name manipulation and search - * $Revision: 78 $ + * $Revision: 79 $ * ******************************************************************************/ @@ -198,7 +198,7 @@ AcpiNsBuildExternalPath ( } -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT /******************************************************************************* * * FUNCTION: AcpiNsGetExternalPathname diff --git a/sys/contrib/dev/acpica/nssearch.c b/sys/contrib/dev/acpica/nssearch.c index 7b8ad59..b0add89 100644 --- a/sys/contrib/dev/acpica/nssearch.c +++ b/sys/contrib/dev/acpica/nssearch.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: nssearch - Namespace search - * $Revision: 86 $ + * $Revision: 89 $ * ******************************************************************************/ @@ -163,7 +163,7 @@ AcpiNsSearchNode ( ACPI_FUNCTION_TRACE ("NsSearchNode"); -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT if (ACPI_LV_NAMES & AcpiDbgLevel) { NATIVE_CHAR *ScopeName; @@ -306,7 +306,7 @@ AcpiNsSearchParentTree ( if (AcpiNsLocal (Type)) { - ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, + ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] type [%s] must be local to this scope (no parent search)\n", (char *) &TargetName, AcpiUtGetTypeName (Type))); } @@ -395,10 +395,10 @@ AcpiNsSearchAndEnter ( if (!Node || !TargetName || !ReturnNode) { - ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null param- Table %p Name %X Return %p\n", + ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Null param: Node %p Name %X ReturnNode %p\n", Node, TargetName, ReturnNode)); - ACPI_REPORT_ERROR (("NsSearchAndEnter: bad (null) parameter\n")); + ACPI_REPORT_ERROR (("NsSearchAndEnter: Null parameter\n")); return_ACPI_STATUS (AE_BAD_PARAMETER); } diff --git a/sys/contrib/dev/acpica/nsutils.c b/sys/contrib/dev/acpica/nsutils.c index 017d917..a786de7 100644 --- a/sys/contrib/dev/acpica/nsutils.c +++ b/sys/contrib/dev/acpica/nsutils.c @@ -2,7 +2,7 @@ * * Module Name: nsutils - Utilities for accessing ACPI namespace, accessing * parents and siblings and Scope manipulation - * $Revision: 110 $ + * $Revision: 112 $ * *****************************************************************************/ @@ -557,10 +557,14 @@ AcpiNsExternalizeName ( case '^': for (i = 0; i < InternalNameLength; i++) { - if (InternalName[i] != '^') + if (InternalName[i] == '^') { PrefixLength = i + 1; } + else + { + break; + } } if (i == InternalNameLength) @@ -980,7 +984,7 @@ AcpiNsFindParentName ( } -#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) /******************************************************************************* * @@ -1016,7 +1020,7 @@ AcpiNsExistDownstreamSibling ( return (FALSE); } -#endif /* ACPI_DEBUG */ +#endif /* ACPI_DEBUG_OUTPUT */ /******************************************************************************* diff --git a/sys/contrib/dev/acpica/nsxfeval.c b/sys/contrib/dev/acpica/nsxfeval.c index 3986871..1349eda 100644 --- a/sys/contrib/dev/acpica/nsxfeval.c +++ b/sys/contrib/dev/acpica/nsxfeval.c @@ -2,7 +2,7 @@ * * Module Name: nsxfeval - Public interfaces to the ACPI subsystem * ACPI Object evaluation interfaces - * $Revision: 1 $ + * $Revision: 2 $ * ******************************************************************************/ @@ -447,7 +447,6 @@ AcpiEvaluateObject ( } - /******************************************************************************* * * FUNCTION: AcpiWalkNamespace diff --git a/sys/contrib/dev/acpica/psargs.c b/sys/contrib/dev/acpica/psargs.c index 4034788..e1e5346 100644 --- a/sys/contrib/dev/acpica/psargs.c +++ b/sys/contrib/dev/acpica/psargs.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psargs - Parse AML opcode arguments - * $Revision: 62 $ + * $Revision: 64 $ * *****************************************************************************/ @@ -256,7 +256,7 @@ AcpiPsGetNextNamestring ( while (AcpiPsIsPrefixChar (ACPI_GET8 (End))) { - /* include prefix '\\' or '^' */ + /* Include prefix '\\' or '^' */ End++; } @@ -314,20 +314,17 @@ AcpiPsGetNextNamestring ( * MethodCall - Whether the namepath can be the start * of a method call * - * RETURN: None + * RETURN: Status * - * DESCRIPTION: Get next name (if method call, push appropriate # args). Names - * are looked up in either the parsed or internal namespace to - * determine if the name represents a control method. If a method + * DESCRIPTION: Get next name (if method call, return # of required args). + * Names are looked up in the internal namespace to determine + * if the name represents a control method. If a method * is found, the number of arguments to the method is returned. * This information is critical for parsing to continue correctly. * ******************************************************************************/ - -#ifdef PARSER_ONLY - -void +ACPI_STATUS AcpiPsGetNextNamepath ( ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT *Arg, @@ -336,69 +333,77 @@ AcpiPsGetNextNamepath ( { NATIVE_CHAR *Path; ACPI_PARSE_OBJECT *NameOp; - ACPI_PARSE_OBJECT *Op; - ACPI_PARSE_OBJECT *Count; + ACPI_STATUS Status = AE_OK; + ACPI_OPERAND_OBJECT *MethodDesc; + ACPI_NAMESPACE_NODE *Node; + ACPI_GENERIC_STATE ScopeInfo; ACPI_FUNCTION_TRACE ("PsGetNextNamepath"); Path = AcpiPsGetNextNamestring (ParserState); - if (!Path || !MethodCall) - { - /* Null name case, create a null namepath object */ - - AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); - Arg->Common.Value.Name = Path; - return_VOID; - } + /* Null path case is allowed */ - if (AcpiGbl_ParsedNamespaceRoot) + if (Path) { /* - * Lookup the name in the parsed namespace + * Lookup the name in the internal namespace */ - Op = NULL; - if (MethodCall) + ScopeInfo.Scope.Node = NULL; + Node = ParserState->StartNode; + if (Node) { - Op = AcpiPsFind (AcpiPsGetParentScope (ParserState), - Path, AML_METHOD_OP, 0); + ScopeInfo.Scope.Node = Node; } - if (Op) + /* + * Lookup object. We don't want to add anything new to the namespace + * here, however. So we use MODE_EXECUTE. Allow searching of the + * parent tree, but don't open a new scope -- we just want to lookup the + * object (MUST BE mode EXECUTE to perform upsearch) + */ + Status = AcpiNsLookup (&ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, + ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, + &Node); + if (ACPI_SUCCESS (Status) && MethodCall) { - if (Op->Common.AmlOpcode == AML_METHOD_OP) + if (Node->Type == ACPI_TYPE_METHOD) { - /* - * The name refers to a control method, so this namepath is a - * method invocation. We need to 1) Get the number of arguments - * associated with this method, and 2) Change the NAMEPATH - * object into a METHODCALL object. - */ - Count = AcpiPsGetArg (Op, 0); - if (Count && Count->Common.AmlOpcode == AML_BYTE_OP) + MethodDesc = AcpiNsGetAttachedObject (Node); + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Control Method - %p Desc %p Path=%p\n", + Node, MethodDesc, Path)); + + NameOp = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); + if (!NameOp) { - NameOp = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); - if (NameOp) - { - /* Change arg into a METHOD CALL and attach the name */ + return_ACPI_STATUS (AE_NO_MEMORY); + } + + /* Change arg into a METHOD CALL and attach name to it */ - AcpiPsInitOp (Arg, AML_INT_METHODCALL_OP); + AcpiPsInitOp (Arg, AML_INT_METHODCALL_OP); - NameOp->Common.Value.Name = Path; + NameOp->Common.Value.Name = Path; - /* Point METHODCALL/NAME to the METHOD Node */ + /* Point METHODCALL/NAME to the METHOD Node */ - NameOp->Common.Node = (ACPI_NAMESPACE_NODE *) Op; - AcpiPsAppendArg (Arg, NameOp); + NameOp->Common.Node = Node; + AcpiPsAppendArg (Arg, NameOp); - *ArgCount = (UINT32) Count->Common.Value.Integer & - METHOD_FLAGS_ARG_COUNT; - } + if (!MethodDesc) + { + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Control Method - %p has no attached object\n", + Node)); + return_ACPI_STATUS (AE_AML_INTERNAL); } - return_VOID; + ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Control Method - %p Args %X\n", + Node, MethodDesc->Method.ParamCount)); + + *ArgCount = MethodDesc->Method.ParamCount; + return_ACPI_STATUS (AE_OK); } /* @@ -410,127 +415,15 @@ AcpiPsGetNextNamepath ( } /* - * Either we didn't find the object in the namespace, or the object is - * something other than a control method. Just initialize the Op with the - * pathname - */ - AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); - Arg->Common.Value.Name = Path; - - - return_VOID; -} - - -#else - - -void -AcpiPsGetNextNamepath ( - ACPI_PARSE_STATE *ParserState, - ACPI_PARSE_OBJECT *Arg, - UINT32 *ArgCount, - BOOLEAN MethodCall) -{ - NATIVE_CHAR *Path; - ACPI_PARSE_OBJECT *NameOp; - ACPI_STATUS Status; - ACPI_OPERAND_OBJECT *MethodDesc; - ACPI_NAMESPACE_NODE *Node; - ACPI_GENERIC_STATE ScopeInfo; - - - ACPI_FUNCTION_TRACE ("PsGetNextNamepath"); - - - Path = AcpiPsGetNextNamestring (ParserState); - if (!Path || !MethodCall) - { - /* Null name case, create a null namepath object */ - - AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); - Arg->Common.Value.Name = Path; - return_VOID; - } - - /* - * Lookup the name in the internal namespace - */ - ScopeInfo.Scope.Node = NULL; - Node = ParserState->StartNode; - if (Node) - { - ScopeInfo.Scope.Node = Node; - } - - /* - * Lookup object. We don't want to add anything new to the namespace - * here, however. So we use MODE_EXECUTE. Allow searching of the - * parent tree, but don't open a new scope -- we just want to lookup the - * object (MUST BE mode EXECUTE to perform upsearch) - */ - Status = AcpiNsLookup (&ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, - ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, - &Node); - if (ACPI_SUCCESS (Status)) - { - if (Node->Type == ACPI_TYPE_METHOD) - { - MethodDesc = AcpiNsGetAttachedObject (Node); - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Control Method - %p Desc %p Path=%p\n", - Node, MethodDesc, Path)); - - NameOp = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); - if (!NameOp) - { - return_VOID; - } - - /* Change arg into a METHOD CALL and attach name to it */ - - AcpiPsInitOp (Arg, AML_INT_METHODCALL_OP); - - NameOp->Common.Value.Name = Path; - - /* Point METHODCALL/NAME to the METHOD Node */ - - NameOp->Common.Node = Node; - AcpiPsAppendArg (Arg, NameOp); - - if (!MethodDesc) - { - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Control Method - %p has no attached object\n", - Node)); - return_VOID; - } - - ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Control Method - %p Args %X\n", - Node, MethodDesc->Method.ParamCount)); - - *ArgCount = MethodDesc->Method.ParamCount; - return_VOID; - } - - /* - * Else this is normal named object reference. - * Just init the NAMEPATH object with the pathname. - * (See code below) - */ - } - - /* - * Either we didn't find the object in the namespace, or the object is - * something other than a control method. Just initialize the Op with the - * pathname. + * Regardless of success/failure above, + * Just initialize the Op with the pathname. */ AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); Arg->Common.Value.Name = Path; - - return_VOID; + return_ACPI_STATUS (Status); } -#endif /******************************************************************************* * @@ -744,23 +637,25 @@ AcpiPsGetNextField ( * ArgCount - If the argument points to a control method * the method's argument is returned here. * - * RETURN: An op object containing the next argument. + * RETURN: Status, and an op object containing the next argument. * * DESCRIPTION: Get next argument (including complex list arguments that require * pushing the parser stack) * ******************************************************************************/ -ACPI_PARSE_OBJECT * +ACPI_STATUS AcpiPsGetNextArg ( ACPI_PARSE_STATE *ParserState, UINT32 ArgType, - UINT32 *ArgCount) + UINT32 *ArgCount, + ACPI_PARSE_OBJECT **ReturnArg) { ACPI_PARSE_OBJECT *Arg = NULL; ACPI_PARSE_OBJECT *Prev = NULL; ACPI_PARSE_OBJECT *Field; UINT32 Subop; + ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_PTR ("PsGetNextArg", ParserState); @@ -778,16 +673,17 @@ AcpiPsGetNextArg ( /* constants, strings, and namestrings are all the same size */ Arg = AcpiPsAllocOp (AML_BYTE_OP); - if (Arg) + if (!Arg) { - AcpiPsGetNextSimpleArg (ParserState, ArgType, Arg); + return_ACPI_STATUS (AE_NO_MEMORY); } + AcpiPsGetNextSimpleArg (ParserState, ArgType, Arg); break; case ARGP_PKGLENGTH: - /* package length, nothing returned */ + /* Package length, nothing returned */ ParserState->PkgEnd = AcpiPsGetNextPackageEnd (ParserState); break; @@ -797,21 +693,20 @@ AcpiPsGetNextArg ( if (ParserState->Aml < ParserState->PkgEnd) { - /* non-empty list */ + /* Non-empty list */ while (ParserState->Aml < ParserState->PkgEnd) { Field = AcpiPsGetNextField (ParserState); if (!Field) { - break; + return_ACPI_STATUS (AE_NO_MEMORY); } if (Prev) { Prev->Common.Next = Field; } - else { Arg = Field; @@ -820,7 +715,7 @@ AcpiPsGetNextArg ( Prev = Field; } - /* skip to End of byte data */ + /* Skip to End of byte data */ ParserState->Aml = ParserState->PkgEnd; } @@ -831,18 +726,20 @@ AcpiPsGetNextArg ( if (ParserState->Aml < ParserState->PkgEnd) { - /* non-empty list */ + /* Non-empty list */ Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP); - if (Arg) + if (!Arg) { - /* fill in bytelist data */ - - Arg->Common.Value.Size = ACPI_PTR_DIFF (ParserState->PkgEnd, ParserState->Aml); - Arg->Named.Data = ParserState->Aml; + return_ACPI_STATUS (AE_NO_MEMORY); } - /* skip to End of byte data */ + /* Fill in bytelist data */ + + Arg->Common.Value.Size = ACPI_PTR_DIFF (ParserState->PkgEnd, ParserState->Aml); + Arg->Named.Data = ParserState->Aml; + + /* Skip to End of byte data */ ParserState->Aml = ParserState->PkgEnd; } @@ -852,27 +749,27 @@ AcpiPsGetNextArg ( case ARGP_TARGET: case ARGP_SUPERNAME: case ARGP_SIMPLENAME: + + Subop = AcpiPsPeekOpcode (ParserState); + if (Subop == 0 || + AcpiPsIsLeadingChar (Subop) || + AcpiPsIsPrefixChar (Subop)) { - Subop = AcpiPsPeekOpcode (ParserState); - if (Subop == 0 || - AcpiPsIsLeadingChar (Subop) || - AcpiPsIsPrefixChar (Subop)) - { - /* NullName or NameString */ + /* NullName or NameString */ - Arg = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); - if (Arg) - { - AcpiPsGetNextNamepath (ParserState, Arg, ArgCount, 0); - } + Arg = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); + if (!Arg) + { + return_ACPI_STATUS (AE_NO_MEMORY); } - else - { - /* single complex argument, nothing returned */ + Status = AcpiPsGetNextNamepath (ParserState, Arg, ArgCount, 0); + } + else + { + /* single complex argument, nothing returned */ - *ArgCount = 1; - } + *ArgCount = 1; } break; @@ -898,10 +795,14 @@ AcpiPsGetNextArg ( } break; + default: + ACPI_REPORT_ERROR (("Invalid ArgType: %X\n", ArgType)); + Status = AE_AML_OPERAND_TYPE; break; } - return_PTR (Arg); + *ReturnArg = Arg; + return_ACPI_STATUS (Status); } diff --git a/sys/contrib/dev/acpica/psopcode.c b/sys/contrib/dev/acpica/psopcode.c index 53723e4..270c743 100644 --- a/sys/contrib/dev/acpica/psopcode.c +++ b/sys/contrib/dev/acpica/psopcode.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psopcode - Parser/Interpreter opcode information table - * $Revision: 71 $ + * $Revision: 72 $ * *****************************************************************************/ @@ -649,17 +649,17 @@ const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES] = /* 60 */ ACPI_OP ("LNotEqual", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT), /* 61 */ ACPI_OP ("LLessEqual", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT), /* 62 */ ACPI_OP ("LGreaterEqual", ARGP_LGREATEREQUAL_OP, ARGI_LGREATEREQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT), -/* 63 */ ACPI_OP ("[NamePath]", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_NSOBJECT | AML_NSNODE ), -/* 64 */ ACPI_OP ("[MethodCall]", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP, ACPI_TYPE_METHOD, AML_CLASS_METHOD_CALL, AML_TYPE_METHOD_CALL, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE), -/* 65 */ ACPI_OP ("[ByteList]", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP, ACPI_TYPE_ANY, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0), -/* 66 */ ACPI_OP ("[ReservedField]", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), -/* 67 */ ACPI_OP ("[NamedField]", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ), -/* 68 */ ACPI_OP ("[AccessField]", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), -/* 69 */ ACPI_OP ("[StaticString", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), -/* 6A */ ACPI_OP ("[Return Value]", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_RETURN_VALUE, AML_TYPE_RETURN, AML_HAS_ARGS | AML_HAS_RETVAL), -/* 6B */ ACPI_OP ("UNKNOWN_OP!", ARG_NONE, ARG_NONE, INTERNAL_TYPE_INVALID, AML_CLASS_UNKNOWN, AML_TYPE_BOGUS, AML_HAS_ARGS), -/* 6C */ ACPI_OP ("ASCII_ONLY!", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_ASCII, AML_TYPE_BOGUS, AML_HAS_ARGS), -/* 6D */ ACPI_OP ("PREFIX_ONLY!", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_PREFIX, AML_TYPE_BOGUS, AML_HAS_ARGS), +/* 63 */ ACPI_OP ("-NamePath-", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP, INTERNAL_TYPE_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_NSOBJECT | AML_NSNODE ), +/* 64 */ ACPI_OP ("-MethodCall-", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP, ACPI_TYPE_METHOD, AML_CLASS_METHOD_CALL, AML_TYPE_METHOD_CALL, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE), +/* 65 */ ACPI_OP ("-ByteList-", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP, ACPI_TYPE_ANY, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0), +/* 66 */ ACPI_OP ("-ReservedField-", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), +/* 67 */ ACPI_OP ("-NamedField-", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ), +/* 68 */ ACPI_OP ("-AccessField-", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), +/* 69 */ ACPI_OP ("-StaticString", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), +/* 6A */ ACPI_OP ("-Return Value-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_RETURN_VALUE, AML_TYPE_RETURN, AML_HAS_ARGS | AML_HAS_RETVAL), +/* 6B */ ACPI_OP ("-UNKNOWN_OP-", ARG_NONE, ARG_NONE, INTERNAL_TYPE_INVALID, AML_CLASS_UNKNOWN, AML_TYPE_BOGUS, AML_HAS_ARGS), +/* 6C */ ACPI_OP ("-ASCII_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_ASCII, AML_TYPE_BOGUS, AML_HAS_ARGS), +/* 6D */ ACPI_OP ("-PREFIX_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_PREFIX, AML_TYPE_BOGUS, AML_HAS_ARGS), /* ACPI 2.0 opcodes */ diff --git a/sys/contrib/dev/acpica/psparse.c b/sys/contrib/dev/acpica/psparse.c index 3740e19..8d4606d 100644 --- a/sys/contrib/dev/acpica/psparse.c +++ b/sys/contrib/dev/acpica/psparse.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: psparse - Parser top level AML parse routines - * $Revision: 129 $ + * $Revision: 133 $ * *****************************************************************************/ @@ -206,60 +206,6 @@ AcpiPsPeekOpcode ( /******************************************************************************* * - * FUNCTION: AcpiPsFindObject - * - * PARAMETERS: Opcode - Current opcode - * ParserState - Current state - * WalkState - Current state - * *Op - Where found/new op is returned - * - * RETURN: Status - * - * DESCRIPTION: Find a named object. Two versions - one to search the parse - * tree (for parser-only applications such as acpidump), another - * to search the ACPI internal namespace (the parse tree may no - * longer exist) - * - ******************************************************************************/ - -#ifdef PARSER_ONLY - -ACPI_STATUS -AcpiPsFindObject ( - ACPI_WALK_STATE *WalkState, - ACPI_PARSE_OBJECT **OutOp) -{ - NATIVE_CHAR *Path; - - - /* We are only interested in opcodes that have an associated name */ - - if (!(WalkState->OpInfo->Flags & AML_NAMED)) - { - *OutOp = WalkState->Op; - return (AE_OK); - } - - /* Find the name in the parse tree */ - - Path = AcpiPsGetNextNamestring (&WalkState->ParserState); - - *OutOp = AcpiPsFind (AcpiPsGetParentScope (&WalkState->ParserState), - Path, WalkState->Opcode, 1); - - if (!(*OutOp)) - { - return (AE_NOT_FOUND); - } - - return (AE_OK); -} - -#endif - - -/******************************************************************************* - * * FUNCTION: AcpiPsCompleteThisOp * * PARAMETERS: WalkState - Current State @@ -276,7 +222,6 @@ AcpiPsCompleteThisOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { -#ifndef PARSER_ONLY ACPI_PARSE_OBJECT *Prev; ACPI_PARSE_OBJECT *Next; const ACPI_OPCODE_INFO *ParentInfo; @@ -431,10 +376,6 @@ AcpiPsCompleteThisOp ( } return_VOID; - -#else - return; -#endif } @@ -496,6 +437,13 @@ AcpiPsNextParseState ( ParserState->Aml = WalkState->AmlLastWhile; break; +#if 0 + case AE_CTRL_SKIP: + + ParserState->Aml = ParserState->Scope->ParseScope.PkgEnd; + Status = AE_OK; + break; +#endif case AE_CTRL_TRUE: @@ -712,15 +660,28 @@ AcpiPsParseLoop ( * Get and append arguments until we find the node that contains * the name (the type ARGP_NAME). */ - while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) != ARGP_NAME) + while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && + (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) != ARGP_NAME)) { - Arg = AcpiPsGetNextArg (ParserState, - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), - &WalkState->ArgCount); + Status = AcpiPsGetNextArg (ParserState, + GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), + &WalkState->ArgCount, &Arg); + if (ACPI_FAILURE (Status)) + { + goto CloseThisOp; + } + AcpiPsAppendArg (&PreOp, Arg); INCREMENT_ARG_LIST (WalkState->ArgTypes); } + /* Make sure that we found a NAME and didn't run out of arguments */ + + if (!GET_CURRENT_ARG_TYPE (WalkState->ArgTypes)) + { + return_ACPI_STATUS (AE_AML_NO_OPERAND); + } + /* We know that this arg is a name, move to next arg */ INCREMENT_ARG_LIST (WalkState->ArgTypes); @@ -828,8 +789,8 @@ AcpiPsParseLoop ( if (WalkState->OpInfo) { ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, - "Opcode %4.4hX [%s] Op %p Aml %p AmlOffset %5.5X\n", - Op->Common.AmlOpcode, WalkState->OpInfo->Name, + "Opcode %4.4X [%s] Op %p Aml %p AmlOffset %5.5X\n", + (UINT32) Op->Common.AmlOpcode, WalkState->OpInfo->Name, Op, ParserState->Aml, Op->Common.AmlOffset)); } } @@ -859,7 +820,19 @@ AcpiPsParseLoop ( case AML_INT_NAMEPATH_OP: /* AML_NAMESTRING_ARG */ - AcpiPsGetNextNamepath (ParserState, Op, &WalkState->ArgCount, 1); + Status = AcpiPsGetNextNamepath (ParserState, Op, &WalkState->ArgCount, 1); + if (ACPI_FAILURE (Status)) + { + /* NOT_FOUND is an error only if we are actually executing a method */ + + if ((((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) && + (Status == AE_NOT_FOUND)) || + (Status != AE_NOT_FOUND)) + { + goto CloseThisOp; + } + } + WalkState->ArgTypes = 0; break; @@ -870,17 +843,29 @@ AcpiPsParseLoop ( while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && !WalkState->ArgCount) { - WalkState->AmlOffset = ACPI_PTR_DIFF (ParserState->Aml, + WalkState->AmlOffset = ACPI_PTR_DIFF (ParserState->Aml, ParserState->AmlStart); - Arg = AcpiPsGetNextArg (ParserState, - GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), - &WalkState->ArgCount); + Status = AcpiPsGetNextArg (ParserState, + GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), + &WalkState->ArgCount, &Arg); + if (ACPI_FAILURE (Status)) + { + /* NOT_FOUND is an error only if we are actually executing a method */ + + if ((((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) && + (Status == AE_NOT_FOUND) && + (Op->Common.AmlOpcode != AML_COND_REF_OF_OP)) || + (Status != AE_NOT_FOUND)) + { + goto CloseThisOp; + } + } + if (Arg) { Arg->Common.AmlOffset = WalkState->AmlOffset; AcpiPsAppendArg (Op, Arg); } - INCREMENT_ARG_LIST (WalkState->ArgTypes); } @@ -915,7 +900,7 @@ AcpiPsParseLoop ( (WalkState->DescendingCallback != AcpiDsExecBeginOp)) { /* - * Skip parsing of + * Skip parsing of * because we don't have enough info in the first pass * to parse them correctly. */ @@ -1043,15 +1028,18 @@ CloseThisOp: AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); - WalkState->Op = Op; - WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); - WalkState->Opcode = Op->Common.AmlOpcode; + if (Op) + { + WalkState->Op = Op; + WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); + WalkState->Opcode = Op->Common.AmlOpcode; - Status = WalkState->AscendingCallback (WalkState); - Status = AcpiPsNextParseState (WalkState, Op, Status); + Status = WalkState->AscendingCallback (WalkState); + Status = AcpiPsNextParseState (WalkState, Op, Status); - AcpiPsCompleteThisOp (WalkState, Op); - Op = NULL; + AcpiPsCompleteThisOp (WalkState, Op); + Op = NULL; + } Status = AE_OK; break; @@ -1225,6 +1213,7 @@ AcpiPsParseAml ( ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; + ACPI_STATUS TerminateStatus; ACPI_THREAD_STATE *Thread; ACPI_THREAD_STATE *PrevWalkList = AcpiGbl_CurrentWalkList; ACPI_WALK_STATE *PreviousWalkState; @@ -1309,11 +1298,10 @@ AcpiPsParseAml ( */ if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) { - Status = AcpiDsTerminateControlMethod (WalkState); - if (ACPI_FAILURE (Status)) + TerminateStatus = AcpiDsTerminateControlMethod (WalkState); + if (ACPI_FAILURE (TerminateStatus)) { ACPI_REPORT_ERROR (("Could not terminate control method properly\n")); - Status = AE_OK; /* Ignore error and continue */ } diff --git a/sys/contrib/dev/acpica/pstree.c b/sys/contrib/dev/acpica/pstree.c index 2117e6c..d1729db 100644 --- a/sys/contrib/dev/acpica/pstree.c +++ b/sys/contrib/dev/acpica/pstree.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: pstree - Parser op tree manipulation/traversal/search - * $Revision: 39 $ + * $Revision: 40 $ * *****************************************************************************/ @@ -219,7 +219,7 @@ AcpiPsAppendArg ( { /* Invalid opcode */ - ACPI_REPORT_ERROR (("PsAppendArg: Invalid AML Opcode: 0x%2.2X\n", + ACPI_REPORT_ERROR (("PsAppendArg: Invalid AML Opcode: 0x%2.2X\n", Op->Common.AmlOpcode)); return; } diff --git a/sys/contrib/dev/acpica/rsdump.c b/sys/contrib/dev/acpica/rsdump.c index 956cdf4..b024347 100644 --- a/sys/contrib/dev/acpica/rsdump.c +++ b/sys/contrib/dev/acpica/rsdump.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: rsdump - Functions to display the resource structures. - * $Revision: 32 $ + * $Revision: 33 $ * ******************************************************************************/ @@ -124,7 +124,7 @@ ACPI_MODULE_NAME ("rsdump") -#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) /******************************************************************************* * diff --git a/sys/contrib/dev/acpica/tbconvrt.c b/sys/contrib/dev/acpica/tbconvrt.c index f2f2479..14d33e4 100644 --- a/sys/contrib/dev/acpica/tbconvrt.c +++ b/sys/contrib/dev/acpica/tbconvrt.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbconvrt - ACPI Table conversion utilities - * $Revision: 42 $ + * $Revision: 43 $ * *****************************************************************************/ @@ -195,7 +195,7 @@ AcpiTbConvertToXsdt ( /* Compute size of the converted XSDT */ - TableSize = ((ACPI_SIZE) AcpiGbl_RsdtTableCount * sizeof (UINT64)) + + TableSize = ((ACPI_SIZE) AcpiGbl_RsdtTableCount * sizeof (UINT64)) + sizeof (ACPI_TABLE_HEADER); /* Allocate an XSDT */ @@ -242,7 +242,6 @@ AcpiTbConvertToXsdt ( } - /******************************************************************************* * * FUNCTION: AcpiTbConvertFadt1 @@ -365,49 +364,49 @@ AcpiTbConvertFadt2 ( if (!(ACPI_GET_ADDRESS (LocalFadt->XPm1aEvtBlk.Address))) { - ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XPm1aEvtBlk, + ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XPm1aEvtBlk, LocalFadt->Pm1EvtLen, LocalFadt->V1_Pm1aEvtBlk); } if (!(ACPI_GET_ADDRESS (LocalFadt->XPm1bEvtBlk.Address))) { - ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XPm1bEvtBlk, + ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XPm1bEvtBlk, LocalFadt->Pm1EvtLen, LocalFadt->V1_Pm1bEvtBlk); } if (!(ACPI_GET_ADDRESS (LocalFadt->XPm1aCntBlk.Address))) { - ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XPm1aCntBlk, + ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XPm1aCntBlk, LocalFadt->Pm1CntLen, LocalFadt->V1_Pm1aCntBlk); } if (!(ACPI_GET_ADDRESS (LocalFadt->XPm1bCntBlk.Address))) { - ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XPm1bCntBlk, + ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XPm1bCntBlk, LocalFadt->Pm1CntLen, LocalFadt->V1_Pm1bCntBlk); } if (!(ACPI_GET_ADDRESS (LocalFadt->XPm2CntBlk.Address))) { - ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XPm2CntBlk, + ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XPm2CntBlk, LocalFadt->Pm2CntLen, LocalFadt->V1_Pm2CntBlk); } if (!(ACPI_GET_ADDRESS (LocalFadt->XPmTmrBlk.Address))) { - ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XPmTmrBlk, + ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XPmTmrBlk, LocalFadt->PmTmLen, LocalFadt->V1_PmTmrBlk); } if (!(ACPI_GET_ADDRESS (LocalFadt->XGpe0Blk.Address))) { - ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XGpe0Blk, + ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XGpe0Blk, LocalFadt->Gpe0BlkLen, LocalFadt->V1_Gpe0Blk); } if (!(ACPI_GET_ADDRESS (LocalFadt->XGpe1Blk.Address))) { - ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XGpe1Blk, + ASL_BUILD_GAS_FROM_V1_ENTRY (LocalFadt->XGpe1Blk, LocalFadt->Gpe1BlkLen, LocalFadt->V1_Gpe1Blk); } } @@ -449,7 +448,7 @@ AcpiTbConvertTableFadt (void) { return_ACPI_STATUS (AE_NO_MEMORY); } - + /* * FADT length and version validation. The table must be at least as * long as the version 1.0 FADT @@ -466,7 +465,7 @@ AcpiTbConvertTableFadt (void) { /* Length is too short to be a V2.0 table */ - ACPI_REPORT_WARNING (("Inconsistent FADT length (0x%X) and revision (0x%X), using FADT V1.0 portion of table\n", + ACPI_REPORT_WARNING (("Inconsistent FADT length (0x%X) and revision (0x%X), using FADT V1.0 portion of table\n", AcpiGbl_FADT->Header.Length, AcpiGbl_FADT->Header.Revision)); AcpiTbConvertFadt1 (LocalFadt, (void *) AcpiGbl_FADT); @@ -545,7 +544,7 @@ AcpiTbBuildCommonFacs ( if (AcpiGbl_FACS->Length < 64) { - ACPI_REPORT_WARNING (("FACS is shorter than the ACPI specification allows: 0x%X, using anyway\n", + ACPI_REPORT_WARNING (("FACS is shorter than the ACPI specification allows: 0x%X, using anyway\n", AcpiGbl_FACS->Length)); } diff --git a/sys/contrib/dev/acpica/tbget.c b/sys/contrib/dev/acpica/tbget.c index 3616875..6e8178c 100644 --- a/sys/contrib/dev/acpica/tbget.c +++ b/sys/contrib/dev/acpica/tbget.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbget - ACPI Table get* routines - * $Revision: 78 $ + * $Revision: 79 $ * *****************************************************************************/ @@ -164,7 +164,7 @@ AcpiTbGetTable ( Status = AcpiTbGetTableBody (Address, &Header, TableInfo); if (ACPI_FAILURE (Status)) { - ACPI_REPORT_ERROR (("Could not get ACPI table (size %X), %s\n", + ACPI_REPORT_ERROR (("Could not get ACPI table (size %X), %s\n", Header.Length, AcpiFormatException (Status))); return_ACPI_STATUS (Status); } @@ -185,7 +185,7 @@ AcpiTbGetTable ( * * DESCRIPTION: Get an ACPI table header. Works in both physical or virtual * addressing mode. Works with both physical or logical pointers. - * Table is either copied or mapped, depending on the pointer + * Table is either copied or mapped, depending on the pointer * type and mode of the processor. * ******************************************************************************/ @@ -260,10 +260,10 @@ AcpiTbGetTableHeader ( * RETURN: Status * * DESCRIPTION: Get an entire ACPI table with support to allow the host OS to - * replace the table with a newer version (table override.) + * replace the table with a newer version (table override.) * Works in both physical or virtual * addressing mode. Works with both physical or logical pointers. - * Table is either copied or mapped, depending on the pointer + * Table is either copied or mapped, depending on the pointer * type and mode of the processor. * ******************************************************************************/ @@ -332,7 +332,7 @@ AcpiTbTableOverride ( /* * The OSL will examine the header and decide whether to override this - * table. If it decides to override, a table will be returned in NewTable, + * table. If it decides to override, a table will be returned in NewTable, * which we will then copy. */ Status = AcpiOsTableOverride (Header, &NewTable); @@ -340,7 +340,7 @@ AcpiTbTableOverride ( { /* Some severe error from the OSL, but we basically ignore it */ - ACPI_REPORT_ERROR (("Could not override ACPI table, %s\n", + ACPI_REPORT_ERROR (("Could not override ACPI table, %s\n", AcpiFormatException (Status))); return_ACPI_STATUS (Status); } @@ -352,8 +352,8 @@ AcpiTbTableOverride ( return_ACPI_STATUS (AE_NO_ACPI_TABLES); } - /* - * We have a new table to override the old one. Get a copy of + /* + * We have a new table to override the old one. Get a copy of * the new one. We know that the new table has a logical pointer. */ Address.PointerType = ACPI_LOGICAL_POINTER | ACPI_LOGICAL_ADDRESSING; @@ -369,7 +369,7 @@ AcpiTbTableOverride ( /* Copy the table info */ - ACPI_REPORT_INFO (("Table [%4.4s] replaced by host OS\n", + ACPI_REPORT_INFO (("Table [%4.4s] replaced by host OS\n", TableInfo->Pointer->Signature)); return_ACPI_STATUS (AE_OK); @@ -389,7 +389,7 @@ AcpiTbTableOverride ( * * DESCRIPTION: Get an entire ACPI table. Works in both physical or virtual * addressing mode. Works with both physical or logical pointers. - * Table is either copied or mapped, depending on the pointer + * Table is either copied or mapped, depending on the pointer * type and mode of the processor. * ******************************************************************************/ @@ -404,7 +404,7 @@ AcpiTbGetThisTable ( UINT8 Allocation; ACPI_STATUS Status = AE_OK; - + ACPI_FUNCTION_TRACE ("TbGetThisTable"); @@ -443,7 +443,7 @@ AcpiTbGetThisTable ( * Just map the table's physical memory * into our address space. */ - Status = AcpiOsMapMemory (Address->Pointer.Physical, (ACPI_SIZE) Header->Length, + Status = AcpiOsMapMemory (Address->Pointer.Physical, (ACPI_SIZE) Header->Length, (void **) &FullTable); if (ACPI_FAILURE (Status)) { @@ -490,9 +490,9 @@ AcpiTbGetThisTable ( TableInfo->Allocation = Allocation; TableInfo->BasePointer = FullTable; - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, - "Found table [%4.4s] at %8.8X%8.8X, mapped/copied to %p\n", - FullTable->Signature, + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + "Found table [%4.4s] at %8.8X%8.8X, mapped/copied to %p\n", + FullTable->Signature, ACPI_HIDWORD (Address->Pointer.Physical), ACPI_LODWORD (Address->Pointer.Physical), FullTable)); diff --git a/sys/contrib/dev/acpica/tbgetall.c b/sys/contrib/dev/acpica/tbgetall.c index dbd41c5..690a999 100644 --- a/sys/contrib/dev/acpica/tbgetall.c +++ b/sys/contrib/dev/acpica/tbgetall.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbgetall - Get all required ACPI tables - * $Revision: 1 $ + * $Revision: 2 $ * *****************************************************************************/ @@ -124,7 +124,6 @@ ACPI_MODULE_NAME ("tbgetall") - /******************************************************************************* * * FUNCTION: AcpiTbGetPrimaryTable @@ -291,12 +290,12 @@ AcpiTbGetRequiredTables ( ACPI_STATUS Status = AE_OK; UINT32 i; ACPI_TABLE_DESC TableInfo; - ACPI_POINTER Address; + ACPI_POINTER Address; ACPI_FUNCTION_TRACE ("TbGetRequiredTables"); - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%d ACPI tables in RSDT\n", + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "%d ACPI tables in RSDT\n", AcpiGbl_RsdtTableCount)); @@ -316,7 +315,7 @@ AcpiTbGetRequiredTables ( Address.Pointer.Value = ACPI_GET_ADDRESS (AcpiGbl_XSDT->TableOffsetEntry[i]); - /* + /* * Get the tables needed by this subsystem (FADT and any SSDTs). * NOTE: All other tables are completely ignored at this time. */ diff --git a/sys/contrib/dev/acpica/tbinstal.c b/sys/contrib/dev/acpica/tbinstal.c index 7286124..6f7a213 100644 --- a/sys/contrib/dev/acpica/tbinstal.c +++ b/sys/contrib/dev/acpica/tbinstal.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbinstal - ACPI table installation and removal - * $Revision: 62 $ + * $Revision: 63 $ * *****************************************************************************/ @@ -171,7 +171,7 @@ AcpiTbMatchSignature ( TableInfo->Type = (UINT8) i; } - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Table [%4.4s] matched and is a required ACPI table\n", (char *) AcpiGbl_AcpiTableData[i].Signature)); @@ -179,7 +179,7 @@ AcpiTbMatchSignature ( } } - ACPI_DEBUG_PRINT ((ACPI_DB_INFO, + ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Table [%4.4s] is not a required ACPI table - ignored\n", (char *) Signature)); @@ -215,7 +215,7 @@ AcpiTbInstallTable ( Status = AcpiUtAcquireMutex (ACPI_MTX_TABLES); if (ACPI_FAILURE (Status)) { - ACPI_REPORT_ERROR (("Could not acquire table mutex for [%4.4s], %s\n", + ACPI_REPORT_ERROR (("Could not acquire table mutex for [%4.4s], %s\n", TableInfo->Pointer->Signature, AcpiFormatException (Status))); return_ACPI_STATUS (Status); } @@ -225,7 +225,7 @@ AcpiTbInstallTable ( Status = AcpiTbInitTableDescriptor (TableInfo->Type, TableInfo); if (ACPI_FAILURE (Status)) { - ACPI_REPORT_ERROR (("Could not install ACPI table [%s], %s\n", + ACPI_REPORT_ERROR (("Could not install ACPI table [%s], %s\n", TableInfo->Pointer->Signature, AcpiFormatException (Status))); } diff --git a/sys/contrib/dev/acpica/tbrsdt.c b/sys/contrib/dev/acpica/tbrsdt.c index 06204f4..66c14cb 100644 --- a/sys/contrib/dev/acpica/tbrsdt.c +++ b/sys/contrib/dev/acpica/tbrsdt.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbrsdt - ACPI RSDT table utilities - * $Revision: 2 $ + * $Revision: 3 $ * *****************************************************************************/ @@ -166,7 +166,7 @@ AcpiTbVerifyRsdp ( return_ACPI_STATUS (Status); } break; - + default: return_ACPI_STATUS (AE_BAD_PARAMETER); } @@ -346,7 +346,7 @@ AcpiTbGetTableRsdt ( { ACPI_TABLE_DESC TableInfo; ACPI_STATUS Status; - ACPI_POINTER Address; + ACPI_POINTER Address; ACPI_FUNCTION_TRACE ("TbGetTableRsdt"); diff --git a/sys/contrib/dev/acpica/tbutils.c b/sys/contrib/dev/acpica/tbutils.c index 72df10a..a1334b6 100644 --- a/sys/contrib/dev/acpica/tbutils.c +++ b/sys/contrib/dev/acpica/tbutils.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: tbutils - Table manipulation utilities - * $Revision: 55 $ + * $Revision: 56 $ * *****************************************************************************/ @@ -233,7 +233,7 @@ AcpiTbValidateTableHeader ( TableHeader, (char *) &Signature)); ACPI_REPORT_WARNING (("Invalid table header length (0x%X) found\n", - TableHeader->Length)); + (UINT32) TableHeader->Length)); ACPI_DUMP_BUFFER (TableHeader, sizeof (ACPI_TABLE_HEADER)); return (AE_BAD_HEADER); } @@ -275,7 +275,7 @@ AcpiTbVerifyTableChecksum ( if (Checksum) { ACPI_REPORT_WARNING (("Invalid checksum (%X) in table %4.4s\n", - Checksum, TableHeader->Signature)); + (UINT32) Checksum, TableHeader->Signature)); Status = AE_BAD_CHECKSUM; } diff --git a/sys/contrib/dev/acpica/utdebug.c b/sys/contrib/dev/acpica/utdebug.c index 2280075..78548c6 100644 --- a/sys/contrib/dev/acpica/utdebug.c +++ b/sys/contrib/dev/acpica/utdebug.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utdebug - Debug print routines - * $Revision: 103 $ + * $Revision: 104 $ * *****************************************************************************/ @@ -122,7 +122,7 @@ ACPI_MODULE_NAME ("utdebug") -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT static UINT32 AcpiGbl_PrevThreadId = 0xFFFFFFFF; static char *AcpiGbl_FnEntryStr = "----Entry"; diff --git a/sys/contrib/dev/acpica/uteval.c b/sys/contrib/dev/acpica/uteval.c index eb5fbab..aaca246 100644 --- a/sys/contrib/dev/acpica/uteval.c +++ b/sys/contrib/dev/acpica/uteval.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: uteval - Object evaluation - * $Revision: 40 $ + * $Revision: 41 $ * *****************************************************************************/ @@ -277,7 +277,7 @@ AcpiUtExecute_HID ( Status = AE_TYPE; ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Type returned from _HID not a number or string: %s(%X) \n", - AcpiUtGetObjectTypeName (ObjDesc), + AcpiUtGetObjectTypeName (ObjDesc), ACPI_GET_OBJECT_TYPE (ObjDesc))); } else @@ -390,7 +390,7 @@ AcpiUtExecute_CID ( Status = AE_TYPE; ACPI_DEBUG_PRINT ((ACPI_DB_ERROR, "Type returned from _CID not a number, string, or package: %s(%X) \n", - AcpiUtGetObjectTypeName (ObjDesc), + AcpiUtGetObjectTypeName (ObjDesc), ACPI_GET_OBJECT_TYPE (ObjDesc))); break; } diff --git a/sys/contrib/dev/acpica/utglobal.c b/sys/contrib/dev/acpica/utglobal.c index ab72e4b..5a7b5f8 100644 --- a/sys/contrib/dev/acpica/utglobal.c +++ b/sys/contrib/dev/acpica/utglobal.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utglobal - Global variables for the ACPI subsystem - * $Revision: 165 $ + * $Revision: 168 $ * *****************************************************************************/ @@ -125,7 +125,6 @@ ACPI_MODULE_NAME ("utglobal") - /****************************************************************************** * * FUNCTION: AcpiFormatException @@ -225,7 +224,7 @@ Unknown: /* Debug switch - level and trace mask */ -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT UINT32 AcpiDbgLevel = DEBUG_DEFAULT; #else UINT32 AcpiDbgLevel = NORMAL_DEFAULT; @@ -285,6 +284,10 @@ const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] = {"_REV", ACPI_TYPE_INTEGER, "2"}, {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, {"_GL_", ACPI_TYPE_MUTEX, "0"}, + +#if defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) + {"_OSI", ACPI_TYPE_METHOD, "1"}, +#endif {NULL, ACPI_TYPE_ANY, NULL} /* Table terminator */ }; @@ -622,7 +625,7 @@ AcpiUtGetObjectTypeName ( } -#if defined(ACPI_DEBUG) || defined(ENABLE_DEBUGGER) +#if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) /* * Strings and procedures used for debug only @@ -873,7 +876,7 @@ AcpiUtInitGlobals ( AcpiGbl_RootNodeStruct.Flags = ANOBJ_END_OF_PEER_LIST; -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT AcpiGbl_LowestStackPointer = ACPI_SIZE_MAX; #endif diff --git a/sys/contrib/dev/acpica/utinit.c b/sys/contrib/dev/acpica/utinit.c index 617fbc6..1d9d231 100644 --- a/sys/contrib/dev/acpica/utinit.c +++ b/sys/contrib/dev/acpica/utinit.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utinit - Common ACPI subsystem initialization - * $Revision: 112 $ + * $Revision: 113 $ * *****************************************************************************/ @@ -301,14 +301,14 @@ AcpiUtSubsystemShutdown (void) AcpiGbl_Shutdown = TRUE; ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Shutting down ACPI Subsystem...\n")); - /* Close the Namespace */ - - AcpiNsTerminate (); - /* Close the AcpiEvent Handling */ AcpiEvTerminate (); + /* Close the Namespace */ + + AcpiNsTerminate (); + /* Close the globals */ AcpiUtTerminate (); diff --git a/sys/contrib/dev/acpica/utmisc.c b/sys/contrib/dev/acpica/utmisc.c index e2a3eff..4ff0eb7 100644 --- a/sys/contrib/dev/acpica/utmisc.c +++ b/sys/contrib/dev/acpica/utmisc.c @@ -1,7 +1,7 @@ /******************************************************************************* * * Module Name: utmisc - common utility procedures - * $Revision: 78 $ + * $Revision: 80 $ * ******************************************************************************/ @@ -201,8 +201,7 @@ AcpiUtSetIntegerWidth ( } - -#ifdef ACPI_DEBUG +#ifdef ACPI_DEBUG_OUTPUT /******************************************************************************* * * FUNCTION: AcpiUtDisplayInitPathname diff --git a/sys/contrib/dev/acpica/utxface.c b/sys/contrib/dev/acpica/utxface.c index c2f82a7..99c312c 100644 --- a/sys/contrib/dev/acpica/utxface.c +++ b/sys/contrib/dev/acpica/utxface.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Module Name: utxface - External interfaces for "global" ACPI functions - * $Revision: 97 $ + * $Revision: 100 $ * *****************************************************************************/ @@ -260,6 +260,8 @@ AcpiEnableSubsystem ( { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Going into ACPI mode\n")); + AcpiGbl_OriginalMode = AcpiHwGetMode(); + Status = AcpiEnable (); if (ACPI_FAILURE (Status)) { @@ -309,7 +311,7 @@ AcpiEnableSubsystem ( * * RETURN: Status * - * DESCRIPTION: Completes namespace initialization by initializing device + * DESCRIPTION: Completes namespace initialization by initializing device * objects and executing AML code for Regions, buffers, etc. * ******************************************************************************/ @@ -401,7 +403,7 @@ AcpiTerminate (void) AcpiUtMutexTerminate (); -#ifdef ENABLE_DEBUGGER +#ifdef ACPI_DEBUGGER /* Shut down the debugger */ |