iASL uses oswinxf also, where the original copy of these functions exist.
Does not seem to be worthwhile at this time to split these into a
separate file, but we don't want to link oswinxf into AcpiDump.
This patch cleans up ACPI_STATUS returned in the Linux version of AcpiDump.
These changes include:
1. AE_ACCESS is added to reflect requirement of root priviledge.
2. AE_BAD_ADDRESS is used where address is 0.
3. AE_BAD_SIGNATURE is returned where root cause of the error is the
signature.
4. AE_BAD_HEADER is returned especially on a failure of ApGetTableLength().
5. AE_INVALID_TABLE_LENGTH is returned when reading table content fails
while reading table header succeeds.
6. AE_ERROR is no longer used for the Linux version.
Some error prompts are also cleaned up in this patch. Lv Zheng.
This patch adds multiple table instances support for Unix versions.
For AcpiDump, only "-b" options need to handle multiple table instances,
other modes do not need to worry about this as it is handled by external
programs (for example, AcpiXtract).
The call path for "-b" option is:
ApDumpAllTables()
AcpiOsGetTableByIndex()
ApDumpTableBuffer()
ApWriteToBinaryFile()
It is hard for apdump.c to achieve same "instance ID" that used in the OSL
codes, this patch enhances AcpiOsGetTableByIndex() to obtain table
"instance ID" from OSL layer. ACPICA BZ 1027. Lv Zheng.
This patch adds full support of RSDP/RSDT/XSDT support for Linux to make it
compatible with the wide used original one, it includes a UEFI RSDP search
support using /sys/firmware/efi/systab and a '-r' option.
On hardware reduced platforms running Linux, there might only be UEFI boot
service enabled, no UEFI runtime service is available. Thus when the RSDP
is not located in the EBDA window, it is not possible for AcpiDump to find
the RSDP through UEFI sysfs interfaces. This patch also adds '-r' option
to allow RSDP to be extracted from a user specified position to work around
this issue. Lv Zheng.
This patch reduces code redundancy by moving the FACS/S3PT checksum
verification skip logic into AcpiTbVerifyChecksum().
This patch also adds ApIsValidChecksum() to be called by AcpiDump OSL codes
to verify the checksum of RSDP and tables. Lv Zheng.
This patch cleans up Linux specific AcpiDump initialization code to make
sure it is called by all external interfaces. A redundant flag that
indicates the completion of the initialization is deleted.
This patch also deletes the wrong usage of returning tables used for
initialization from AcpiOsGetTableByName(). Lv Zheng.
This patch cleans up the empty head entry of Gbl_TableListHead which is
only used to hold the count of the list entries. The empty signature name
will cause program error messages where a valid table signature is
expected.
This patch also moves the table entry insertion logic into one single
function and appends multiple table instances handling codes in the new
function. Lv Zheng.
The following error message is fixed after applying this cleanup.
Could not get ACPI table at index 8, AE_NOT_FOUND
This patch reduces code redundancy by combining 2 pieces of the customized
table extraction codes into one single function - OslGetCustomizedTable() -
for Linux.
This patch also cleans up OslReadTableFromFile() which is called by
OslGetCustomizedTable(). A loop around fread() can help to reduce error
messages on Linux where the size of the file containing the customized
table are limitted to 4KB due to sysfs limitation. Lv Zheng.
This patch splits file mapping implementation from AcpiDump to form a new
OSL osunixmap.c.
The invocations of AcpiOsMap/UnmapMemory are split into the table related
mappings and the memory related mappings in this patch.
This patch also cleans up opendir/readdir/closedir in AcpiDump by replacing
them with OSL directory iteration implementation. Lv Zheng.
This patch removes deprecated generate/linux/patches folder, moves useful
release scripts to the generate/linux folder, reduces code redundancy by
creating a script library libacpica.sh file under generate/linux folder.
Lv Zheng.
This change removes some dangerous code that attempts to free the
handler context pointer in some (rare) circumstances. The owner of
the handler owns this pointer and the ACPICA code should never
touch it. Although not seen to be an issue in any kernel, it did
show up as a problem under AcpiExec. Also, set the internal storage
field for the context pointer to zero when the region is deactivated,
simply for sanity. David Box.
This change adds support to allow hosts to install System Control
Interrupt handlers. Certain ACPI functionality requires the host
to handle raw SCIs. For example, the "SCI Doorbell" that is defined
for memory power state support requires the host device driver to
handle SCIs to examine if the doorbell has been activated. Multiple
SCI handlers can be installed to allow for future expansion.
Debugger support is included.
Lv Zheng, Bob Moore. ACPICA BZ 1032.
This reverts commit 64e52a3577f287eeafee98663deff1163cccdd46.
Change was shown to cause some problems with ASLTS.
Note: The AML parser is very delicate as far as changes like this.
Needs additional investigation.
This reverts commit f2fd7294de5b93a778160064f6d61df1792f0d0f.
Change was seen to cause problems with the ASLTS test suite and
will need to be reworked/readdressed.
The operand for this operator does not ever need to generate an
external declaration. Change the type of the operand from a SuperName
to a simple Namestring. Improves disassembly of this operator if
the operand is a control method.
This is an update to the previous commit to support method invocation
as a target operand. Handle the case where an optional target is not
specified in the ASL.
This change implements support to allow method invocations during the
resolution of the target of an ASL operator (such as Store, Add, etc.)
Examples - MTH1 is a control method:
Store (0x1234, MTH1())
Add (INT1, 32, MTH1())
In these cases, the method MTH1 must return a reference to the object
where the result of the operator will be stored. Otherwise, an operand
type exception will occur.
Note: This behavior is legal and supported by the ASL grammar. However,
it was not implemented in the ACPICA interpreter. This provides compatibility
with other ACPI implementations.
Partially due to the nature of the ASL language, it is very difficult
to recover from parse-time errors. Rather than generate perhaps
hundreds of errors later in the compile process, abort immediately
on any serious parse errors.
The make-patches.pl will generate patches with broken patch descriptions. This
is because the script is written to generate Linuxized patches for CVS commits.
The complexity in the make-patches.pl is not needed as GIT has offered many
features to let the patch descriptions to be extracted correctly from the
command line.
The new make-patches.sh script invokes git-extract.sh to provide equivalent
functionalities as make-patches.pl for ACPICA release. This patch also modifies
the git-extract.sh to allow generation of patches that can be used as a part of
an ACPICA release patch set. Lv Zheng.
If an error happens in the middle of a split 32/32 64-bit I/O
operation, do not modify the target of the return value pointer.
Makes the code consistent with the rest of ACPICA. Bjorn Helgaas.
Ensure -v is supported in all of the tools, in an identical manner.
Also cleans up and standardizes the format of the utility names
and supported option strings.
Adds the -fe option which allows the user to specify a file that
contains control method external declarations, with the proper
number of arguments. This tells the disassembler how to parse
code that invokes these methods.