Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged latest upstream master #2

Open
wants to merge 173 commits into
base: master
Choose a base branch
from

Conversation

Lord-Kamina
Copy link

I haven't thoroughly tested it but at least it builds and runs; I think I didn't fuck any of your hacks up.

rmurphy-arm and others added 30 commits April 30, 2018 17:08
IORT revision D contains a few additions and fixes to
currently-supported tables:

- SMMUv3 proximity domain field is enlarged to 4 bytes for consistency
  with SRAT
- Root complex nodes gain an address size limit field equivalent to that
  of named components
- Named component nodes gain a way to describe PASID (SubstreamID)
  support, encoded in their flags

Additionally, we fix a couple of outstanding points in passing:
- Add the stall support flag for named components defined in revision C
- Fix SMMUv3 HTTU override mask, which should always have been 2 bits

Signed-off-by: Robin Murphy <[email protected]>
PMCG nodes were added by IORT revision C, with the unfortunate oversight
that it only defined a single base address, and thus was incapable of
properly describing PMCG implementations with PMCG_CFGR.RELOC_CTRS = 1,
where the counters are in a separate page from the control registers.

Revision D corrects this by clarifying the existing field as the page 0
base address and adding a second field to describe the page 1 address
when implemented. With the spec now fit for purpose, let's support it.

Signed-off-by: Robin Murphy <[email protected]>
The table header validation was intended for AML tables rather than
data tables. This caused an error when disassembling tables with
unusual table signatures such as the RSDP table.

Signed-off-by: Erik Schmauss <[email protected]>
Completes the support and fixes a regression introduced in
version 20180209.
Preparation for the implementation of owner lists instead of
the inefficient existing Owner ID.
acpidump: Expand the table offset field to 32 bits.
acpixtract: Add support to handle the expanded field.
Backwards compatibility is maintained.
Version 20180508.
Cannot disable the fault handler until the command line options
have been parsed.
disassembler: remove incorrect table header validation for data tables
This reverts commit 1f49c3b.
The mechanism is not needed, method execution/deletion is
already optimized, and the Unload() operator is never used.
This is useful if control-c will not automatically exit. This
usually indicates a bug somewhere, but is useful for debugging.
A bit of additional information which is usefull during debug.
decimal makes no sense, and leads to something like this:

acpiexec -x0x00ffffff

This change cleans this up.
Debug level 0x00800000 will dump the current parse tree
just before it is deleted.
ASLTS: adding package resolution with table load testing
Don't need to call NsDumpTables unless the appropriate debug
flag is set.
Usually there is no need to print extra/duplicate error messages.
Option added to restore original behavior (-vh).
Module-level code execution has no method arguments or locals,
so do not attempt to output values for these.
This change alters the parser so that the table load does not abort
upon an error.

Notable changes:

If there is an error while parsing an element of the termlist, we
will skip parsing the current termlist element and continue parsing
to the next opcode in the termlist.

If we get an error while parsing the conditional of If/Else/While or
the device name of Scope, we will skip the body of the statement all
together and pop the ParserState.

If we get an error while parsing the base offset and length of an
operation region declaration, we will remove the operation region
from the namespace.

Signed-off-by: Erik Schmauss <[email protected]>
AML parser: attempt to continue loading table after error
The Unload AML operator is no longer supported for the reasons below.
An AE_NOT_IMPLEMENTED exception is returned.
    1) A correct implementation on at least some hosts may not be possible.
    2) Other ACPI implementations do not correctly/fully support it.
    3) It requires host device driver support which is not known to exist.
        (To properly support namespace unload out from underneath.)
    4) This AML operator has never been seen in the field.
Version 20180531.
Update to ACPICA code style.
Cleanup via: acpisrc -c acpica/source
There are some functions that attempt to store 2 String buffers in
MsgBuffer. This causes compiler warnings due to potential overflow
of MsgBuffer.

By increasing the MsgBuffer, we retain current behavior for functions
using StringBuffer. This also results in separating the size between
MsgBuffer and StringBuffer.

Signed-off-by: Erik Schmauss <[email protected]>
acpibob and others added 30 commits December 12, 2018 13:27
iASL: add ability to report specific warnings or remarks as errors
iASL: remove obsolete AcpiGbl_DoExternals flag
Version 20181213.
Also adds a new firmware error function, AcpiBiosException.
Dump entire object/buffer for any memory leaks detected by
the object/cache tracking mechanism.
iASL: update tpm2 template to revision 4
All ASL code in the test suite.
including tool signons.
Module-level code refers to executable ASL code that runs during
table load. This is typically used in ASL to declare named objects
based on a condition evaluated during table load like so:

DefinitionBlock(...)
{
  OpreationRegion (OPR1, SystemMemory, ...)
  Field (OPR1)
  {
    FLD1, 8 /* Assume that FLD1's value is 0x1 */
  }

  /* The if statement below is referred to as module-level code */

  If (FLD1)
  {
    /* Declare DEV1 conditionally */
    Device (DEV1) {...}
  }

  Device (DEV2)
  {
    ...
  }
}

In legacy module-level code, the execution of the If statement
was deferred after other modules were loaded. The order of
code execution for the table above is the following:

1.) Load OPR1 to the ACPI Namespace
2.) Load FLD1 to the ACPI Namespace (not intended for drivers)
3.) Load DEV2 to the ACPI Namespace
4.) Execute If (FLD1) and load DEV1 if the condition is true

This legacy approach can be problematic for tables that look like the
following:

DefinitionBlock(...)
{
  OpreationRegion (OPR1, SystemMemory, ...)
  Field (OPR1)
  {
    FLD1, 8 /* Assume that FLD1's value is 0x1 */
  }

  /* The if statement below is referred to as module-level code */

  If (FLD1)
  {
    /* Declare DEV1 conditionally */
    Device (DEV1) {...}
  }

  Scope (DEV1)
  {
    /* Add objects DEV1's scope */
    Name (OBJ1, 0x1234)
  }
}

When loading this in the legacy approach, Scope DEV1 gets evaluated
before the If statement. The following is the order of execution:

1.) Load OPR1 to the ACPI Namespace
2.) Load FLD1 to the ACPI Namespace (not intended for drivers)
3.) Add OBJ1 under DEV1's scope -- ERROR. DEV1 does not exist
4.) Execute If (FLD1) and load DEV1 if the condition is true

The legacy approach can never succeed for tables like this due to the
deferral of the module-level code. Due to this limitation, a new
module-level code was developed. This new approach exeutes if
statements in the order that they appear in the definition block.
With this approach, the order of execution for the above defintion
block is as follows:

1.) Load OPR1 to the ACPI Namespace
2.) Load FLD1 to the ACPI Namespace (not intended for drivers)
3.) Execute If (FLD1) and load DEV1 because the condition is true
4.) Add OBJ1 under DEV1's scope.

Since DEV1 is loaded in the namespace in step 3, step 4 executes
successfully.

This change removes support for the legacy module-level code
execution. From this point onward, the new module-level code
execution will be the official approach.

Signed-off-by: Erik Schmauss <[email protected]>
Version 20190108
iASL: Makefile: support parent directories with spaces
Small update.
Nothing can be done with such a region. Just emit a warning so as
not to abort a table load or running method.
- Fault on Field Units
- Some restructuring
- General cleanup of dbtest module
…l-code

Remove legacy module-level code support
iASL: add explanation for nameseg lexing, no functional change
Attempting to improve error messages to clarify that errors
are bubbled up from the original error, possibly across nested
methods.
Certain references will cause runtime errors, such as a reference
from outside a method to an object within the method. Such an
object is only temporary and exists only during the execution of
the method.
# Conflicts:
#	source/compiler/aslload.c
#	source/compiler/aslmessages.c
#	source/compiler/aslpredef.c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants