273 Commits

Author SHA1 Message Date
Robert Moore
14b4464b8b Test suites, ASLTS: Update for ASL+; Resources, Store
Update for latest resource descriptor macro names
Update for various Store(operator, operand tests) for ASL+
2016-09-28 10:25:46 -07:00
Lv Zheng
1a69fcaa99 ASLTS: Fix script regression of running LoadTable
LoadTable opcodes require acpiexec to build OEM tables in RSDT/XSDT.
However, during the EFI porting, OEM test table loading becomes an optional
behavior for acpiexec.
As ASLTS requires the OEM test tables, disabling this option by default
triggers the regression for ASLTS, causing LoadTable related cases to fail.

This patch fixes this regression by enabling this option for ASLTS.

Link: https://bugs.acpica.org/show_bug.cgi?id=1327
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
2016-09-23 08:44:10 +08:00
Robert Moore
d14099ff86 ASL test suite: Additional changes for method invocations
More changes to fix incorrect control method invocation.
similar to previous commit.
2016-09-16 12:48:50 -07:00
Robert Moore
a315224255 ASL test suite: Fix incorrect method invocations
A bunch of tests were invoking the wrong control method.
New iASL caught these because the number of arguments were wrong.
2016-09-14 14:15:02 -07:00
Robert Moore
45b8f63894 Fix for incorrect status from AcpiTbFindTable
Was always returning AE_NOT_FOUND, even if the table was found.

Affected these ASL operators:
DataTableRegion
LoadTable
2016-09-14 07:39:29 -07:00
Lv Zheng
0e24fb67cd Interpreter: Fix MLC issues by switching to new TermList grammar for table loading
The MLC (Module Level Code) is an ACPICA terminology describing the AML
code out of any control method, its support is an indication of the
interpreter behavior during the table loading.

The original implementation of MLC in ACPICA had several issues:
1. Out of any control method, besides of the object creating opcodes, only
   the code blocks wrapped by "If/Else/While" opcodes were supported.
2. The supported MLC code blocks were executed after loading the table
   rather than being executed right in place.
   ============================================================
   The demo of this order issue is as follows:
     Name (OBJ1, 1)
     If (CND1 == 1)
     {
       Name (OBJ2, 2)
     }
     Name (OBJ3, 3)
   The original MLC support created OBJ2 after OBJ3's creation.
   ============================================================
Other than these limitations, MLC support in ACPICA looks correct. And
supporting this should be easy/natural for ACPICA, but enabling of this was
blocked by some ACPICA internal and OSPM specific initialization order
issues we've fixed recently. The wrong support started from the following
false bug fixing commit:
  Commit: 80d7951177315f70b5ffd8663985fbf725d07799
  Subject: Add support for module-level executable AML code.

We can confirm Windows interpreter behavior via reverse engineering means.
It can be proven that not only If/Else/While wrapped code blocks, all
opcodes can be executed at the module level, including operation region
accesses. And it can be proven that the MLC should be executed right in
place, not in such a deferred way executed after loading the table.

And the above facts indeed reflect the spec words around ACPI definition
block tables (DSDT/SSDT/...), the entire table and the Scope object is
defined by the AML specification in BNF style as:
  AMLCode := DefBlockHeader TermList
  DefScope := ScopeOp PkgLength NameString TermList
The bodies of the scope opening terms (AMLCode/Scope) are all TermList,
thus the table loading should be no difference than the control method
evaluations as the body of the Method is also defined by the AML
specification as TermList:
  DefMethod := MethodOp PkgLength NameString MethodFlags TermList
The only difference is: after evaluating control method, created named
objects may be freed due to no reference, while named objects created by
the table loading should only be freed after unloading the table.

So this patch follows the spec and the de-facto standard behavior, enables
the new grammar (TermList) for the table loading.

By doing so, beyond the fixes to the above issues, we can see additional
differences comparing to the old grammar based table loading:
1. Originally, beyond the scope opening terms (AMLCode/Scope),
   If/Else/While wrapped code blocks under the scope creating terms
   (Device/PowerResource/Processor/ThermalZone) are also supported as
   deferred MLC, which violates the spec defined grammar where ObjectList
   is enforced. With MLC support improved as non-deferred, the interpreter
   parses such scope creating terms as TermList rather ObjectList like the
   scope opening terms.
   After probing the Windows behavior and proving that it also parses these
   terms as TermList, we submitted an ECR (Engineering Change Request) to
   the ASWG (ACPI Specification Working Group) to clarify this. The ECR is
   titled as "ASL Grammar Clarification for Executable AML Opcodes" and has
   been accepted by the ASWG. The new grammar will appear in ACPI
   specification 6.2.
2. Originally, Buffer/Package/OperationRegion/CreateXXXField/BankField
   arguments are evaluated in a deferred way after loading the table. With
   MLC support improved, they are also parsed right in place during the
   table loading.
   This is also Windows compliant and the only difference is the removal
   of the debugging messages implemented before AcpiDsExecuteArguments(),
   see Link 1 for the details. A previous commit should have ensured that
   AcpiCheckAddressRange() won't regress.

Note that enabling this feature may cause regressions due to long term
Linux ACPI support on top of the wrong grammar. So this patch also prepares
a global option to be used to roll back to the old grammar during the
period between a regression is reported and the regression is
root-cause-fixed. Lv Zheng.

Link 1: https://bugzilla.kernel.org/show_bug.cgi?id=112911
Tested-by: Chris Bainbridge <chris.bainbridge@gmail.com>
Signed-off-by: Lv Zheng <lv.zheng@intel.com>
2016-08-26 11:01:22 +08:00
Lv Zheng
5ae7d8fbce ASLTS: Add cases to demonstrate MLC order issue
Original ACPICA executes If/Else/While wrapped MLC code block in a deferred
way, this patch introduces ASLTS cases to demonstrate this issue.
file index: order.asl 182
overall file index: order.asl z182

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
2016-08-26 11:01:22 +08:00
Lv Zheng
52fc3de415 ASLTS: Add cases to validate if Type2Opcode is supported at module level
This patch adds test cases to validate if Type2Opcode is supported at
module level.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
2016-08-26 11:01:21 +08:00
Robert Moore
d18654bc94 Revert "Acpica parser" 2016-07-01 07:20:27 -07:00
Lv Zheng
5590b7aee0 ASLTS: Add cases to demonstrate MLC order issue
Original ACPICA executes If/Else/While wrapped MLC code block in a deferred
way, this patch introduces ASLTS cases to demonstrate this issue.
file index: order.asl 182
overall file index: order.asl z182

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
2016-06-22 09:28:53 +08:00
Lv Zheng
6f52b66ca1 ASLTS: Add cases to validate if Type2Opcode is supported at module level
This patch adds test cases to validate if Type2Opcode is supported at
module level.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
2016-06-22 09:28:53 +08:00
Lv Zheng
a33e820c2f ASLTS: Add cases to validate if Type1Opcode is supported at module level
This patch adds module level code execution tests.

test collection: functional
test index in collection: 14
file index: scope.asl 180
            object.asl 181

overall collection: TCLF
overall test index: W01a
overall file index: scope.asl z180
                    object.asl z181

The cases can reflect the current MLC support state - ACPICA currently
supports Type1Opcode at module level. All cases should pass with the
existing MLC support.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
2016-05-13 10:37:11 +08:00
Robert Moore
a981371ef9 Tests: Update copyright notices to 2016
Affects all source files.
2016-01-06 08:58:19 -08:00
Robert Moore
05069fc75f Update grammar.asl test
A couple of small updates.
2015-12-18 09:28:03 -08:00
Robert Moore
85539cd75f Test suite: Update a makefile message
Update "compiled" message for clarity.
2015-12-02 14:38:54 -08:00
Robert Moore
2860196a69 Test suites: Update ASLTS for iASL typechecking changes.
Some tests are now obsolete and have been commented out.
2015-09-30 11:58:35 -07:00
Robert Moore
b6d027a3b1 Update test file permissions (2)
Set correctly to 644.
2015-09-23 13:37:37 -07:00
Robert Moore
09e8e6671a Update test file permissions (1)
Set execute bit to force commit.
2015-09-23 13:35:53 -07:00
Robert Moore
ce260fcd30 Test suite: Update makefile to test all iASL output files
Generate all of the possible output files (listings, etc.) in
order to sanity check that the features seem to be working
properly. These files are immediately deleted.
2015-09-18 14:10:38 -07:00
Robert Moore
d44beb7bdf AAPITS test is deprecated and removed.
Is not maintained and is obsolete.
Will remain in git tree until if/when it can be resurrected.
2015-08-14 09:02:55 -07:00
Robert Moore
eb9f8cb9fd iASL: Add new warnings for method LocalX and ArgX variables.
1) Warn if a Local is set but never used
2) Warn if a ArgX is never used (for non-predefined method names)
3) Warn if a ArgX that is used as a local is never used
2015-06-25 09:56:52 -07:00
Robert Moore
e652bca130 Update file permissions - no functional change.
Cleanup file permissions.
2015-06-23 13:18:39 -07:00
Robert Moore
f194b6e7d7 ACPI 6.0: Aslts: Update for new return value for _REV.
_REV now returns 2 in ACPI 6.0. Also update the expected range
of values for the Revision object.
2015-06-09 13:13:26 -07:00
Robert Moore
3b1026e0bd De-macroize calls to standard C library functions.
Across all of ACPICA. Replace C library macros such as ACPI_STRLEN
with the standard names such as strlen. The original purpose for
these macros is long since obsolete.
2015-06-09 12:11:26 -07:00
Robert Moore
960dac756b aapts: Update for ACPICA interface change.
For SetFirmwareWakingVector.
2015-06-05 12:20:41 -07:00
Robert Moore
0789c7cb97 Merge pull request #67 from krytarowski/tests-on-netbsd
Use portable uname option -a to unveil platform details
2015-06-02 14:01:27 -07:00
Kamil Rytarowski
c768c78ce7 Fix build of tests/aabits 2015-03-13 02:38:56 +00:00
Kamil Rytarowski
5c3a053e67 Use portable uname option -a to unveil platform details 2015-03-13 00:45:23 +00:00
Robert Moore
1d438e1493 Tests: Update constants for iASL constant folding changes.
The iASL constant folding is has been updated. Update ASLTS to reflect this.
We must force some operations to bypass the constant folding so that
there are no compile-time errors, and the runtime error checking is
tested instead. In other words, more errors are now caught during
the compile.
2015-03-11 11:36:42 -07:00
Robert Moore
46dc081e57 Casting changes for MSVC and FreeBSD support.
Update for some recent changes.
2015-02-26 08:10:32 -08:00
David E. Box
8990e73ab2 Update Copyright headers to 2015. 2015-01-27 11:55:38 -08:00
David E. Box
6a13235548 Revert "source and test: update copyright notices to 2015"
This reverts commit 28a95326289ca5ee7cd95f8e8e809dc5564d9509.

Commit mistakenly changes file format to CRLF from default LF.
2015-01-27 11:39:30 -08:00
David E. Box
28a9532628 source and test: update copyright notices to 2015 2015-01-23 14:44:06 -08:00
Robert Moore
3d4baf30e4 Tests/API: Update to handle new acpiexec features.
The API test sets ACPI_EXEC_APP, so need to add a stub function
for the new -fi acpiexec feature.
2014-10-09 10:16:36 -07:00
Robert Moore
b35f4a7dbc Tests/ASLTS: Abort test suite on iASL compile failure.
This change updates the ASLTS scripts and makefiles to abort
immediately if any test suite case fails to compile.
David E. Box. ACPICA BZ 861.
2014-10-03 14:12:06 -07:00
Robert Moore
6b0a0455be Tests: Update ASLTS makefiles.
Update the main makefile to ensure that iASL compile failures are
correctly reported. Also fix a missing semicolon.

ACPICA BZ 1106. Reported by Dean Nelson <dnelson@redhat.com>,
fixed by Lv Zheng. Independently validated by David Box.
2014-09-25 09:29:12 -07:00
Robert Moore
f3b516dfd5 iASL/Disassembler: Add support for hardware summary mapfiles.
Adds support for both iASL and the disassembler to create a hardware
and connection summary mapfile (via the -lm option.)
2014-09-19 10:03:56 -07:00
Robert Moore
b7c6bb1e79 Tests/aapits: Eliminate unreachable code warnings.
Temporarily remove a block of code that could not be reached,
pending further investigation. Eliminates unreachable code
warnings.
2014-07-30 14:05:57 -07:00
Robert Moore
1fab38f3ac Tests/aapits: Fix a file handle memory leak.
In atexec.c. ACPICA BZ 1095.
2014-07-30 14:00:39 -07:00
Robert Moore
963bb95f4e Tests: Enhance asltsrun script to understand new debug object output.
The AML debug object now outputs the value of the current ACPI Timer().
This broke the original script. This change makes the script independent
of the contents between the opening brackets.
David Box.
2014-07-29 14:02:01 -07:00
David E. Box
eac75066f8 ASLTS: Fixes for SMBUS/GSBUS region access tests
This patch makes corrections to serveral region tests that check operations on
GenericSerialBus and SMBus fields. These changes are required after commit
36a1179 corrected the size of the buffer that was calculated for each of the
different bus protocols.

Signed-off-by: David E. Box <david.e.box@linux.intel.com>
2014-07-07 08:48:37 -07:00
Lv Zheng
7e49bda60b OSL: Add ACPI_APITS and re-enables AAPITS builds.
Newly added portable OSLs are useful for EFI porting, but tests didn't
cover AAPITS, now AAPITS build is broken.
This patch re-enables AAPITS build. This patch also adds ACPI_APITS
definition so that if we have troubles in sharing code between AAPITS and
ACPI_EXEC_APP, we now have means to introduce differntiations. Lv Zheng.

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
2014-06-25 16:15:57 +08:00
Robert Moore
c80fd53cde Tests/AAPITS: Properly return status for early limit check.
Return a valid status on cache size check failure. Reported
by Colin Ian King.
2014-03-25 12:54:44 -07:00
Robert Moore
1824846998 ACPICA tools: Add common function to get file size.
Replaces 7 separate instances of this common function, with
full exception handling. One new file, common/cmfsize.c
2014-02-18 13:18:17 -08:00
Robert Moore
eb96d8a9b7 Tests/aapits: Update makefile and local OSL.
Add recent new files to the makefile and eliminate some warnings
from the local version of the unix OSL.
2014-02-13 07:56:59 -08:00
Robert Moore
f4247c8fe9 ASLTS: add test for overlapping opregions.
This change enables/adds tests for operation regions that overlap
within the address space. Newly supported by AcpiExec. David Box.
2014-01-10 13:34:21 -08:00
Robert Moore
64b812c5c0 Tests: Update all copyrights to 2014.
Test suites only. Includes headers in all ASL test code.
2014-01-06 09:12:54 -08:00
Robert Moore
99ff9c30be ASLTS: Fixes for slack mode failures.
This patch fixes the failure reported for the following ASLTS test:
 exceptions:exc_result2:m692-Inc-Exc (32/64 bit slack mode)
 exceptions:exc_result2:m692-Dec-Exc (32/64 bit slack mode)

The test cases expect exceptions generated for mismatched types during
implicit conversions happened to Increment/Decrement opcodes.  And the
[Unitialized] object could never be converted into object with any other
types.  But the "FAIL" is emitted due to the slack mode which converts
[Uninitialized] operand into 0-valued Integer, thus no type mismatch can be
examined for these test cases.

The command to confirm this test:
 aslts.sh -m s32 -m s64 -c exc_result2 -t
The result in __STATUS_OF_TESTS before applying this fix:
 ":STST:exceptions:exc_result2:m692-Inc-Exc:FAIL:Errors # 02 00 00 00:"
 ":STST:exceptions:exc_result2:m692-Dec-Exc:FAIL:Errors # 02 00 00 00:"
The result in __STATUS_OF_TESTS after applying this fix:
 ":STST:exceptions:exc_result2:m692-Inc-Exc:PASS:"
 ":STST:exceptions:exc_result2:m692-Dec-Exc:PASS:"

Signed-off-by: Lv Zheng <lv.zheng@intel.com>
2013-12-17 13:34:23 -08:00
Robert Moore
041ed76f69 Tests/ASLTS: Fix all errors in the functional control group.
Corrected the expected value for Implicit Returns for
predicate operations (LNot, LEqual, etc).

Added Sleep operation cap for Timer verification test.

Signed-off-by: David E. Box <david.e.box@linux.intel.com>
2013-12-10 09:12:20 -08:00
Robert Moore
c0c047fea0 Tests/ASLTS: Default behavior is to force rebuild of ACPICA tools
Change -t option name to -u
-u option is used to disable forced rebuild of ACPICA tools
(acpiexec, iasl). Lv Zheng, Bob Moore.
2013-11-14 08:50:43 -08:00