[PATCH] tools/power/acpi: Introduce acpi_validate with manpage for easy validation of ACPI BIOS tables
by Thomas Renninger
The used iasl compiler shares the same code base as the kernel.
Warnings or errors mostly point to bad BIOSes.
These errors should get reported to the BIOS vendors and may indicated that
acpica (kernel ACPI parts) need compatibility adjustings.
Why is an extra tool needed for this?
The dynamic ACPI Source Language (ASL) parts are located in DSDT and often
multiple SSDT tables. Those often have dependencies to each other and the iasl
compiler often cannot resolve external symbols correctly if they are not
passed as external tables (iasl -e option) when tables get disassembled.
This quickly leads to false positive errors.
This tool makes sure disassembling and recompilation is done correctly.
This tool is also made for ACPI BIOS table verification for BIOS vendors and
hardware certification tools for distributions.
Hardware which supports Linux must/should not show any warnings or errors.
Remarks and optimization hints in the logs can be used to further enhance
the ACPI BIOS code.
Warnings and errors mostly describe the issues in a way, so that they can
get passed to and used by BIOS developers to fix the problems easily.
Signed-off-by: Thomas Renninger <trenn(a)suse.de>
---
tools/power/acpi/acpi_validate | 193 ++++++++++++++++++++++++++++++++++++++
tools/power/acpi/acpi_validate.8 | 72 ++++++++++++++
2 files changed, 265 insertions(+), 0 deletions(-)
create mode 100755 tools/power/acpi/acpi_validate
create mode 100644 tools/power/acpi/acpi_validate.8
diff --git a/tools/power/acpi/acpi_validate b/tools/power/acpi/acpi_validate
new file mode 100755
index 0000000..12d105b
--- /dev/null
+++ b/tools/power/acpi/acpi_validate
@@ -0,0 +1,193 @@
+#!/bin/bash
+#
+# Copyright (c) 2012 SUSE Linux Products GmbH
+# Thomas Renninger <trenn(a)suse.de>
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+#
+
+OUTPUT_DIR="$PWD"
+VERBOSE=0
+# Disable remarks and resource checks. The latter often/mostly generates
+# false positive warnings. Can be overridden via -c option
+COMPILE_OPTIONS="-sa -cr -vr"
+DISASSEMBLE_OPTIONS=""
+OUTPUT="/dev/null"
+ACPIDUMP=""
+
+function usage()
+{
+ echo "acpi_validate [ -o output_dir ] [ -v ] [ -a acpidump ]"
+ echo " [ -c compile_options ] [ -d disassemble_options ]"
+ echo
+ echo "This tool extracts, disassembles and recompiles ACPI BIOS tables."
+ echo "The disassembled files will be copied into the local or specified"
+ echo "output directory (-o option)."
+ echo
+ echo "The underlying iasl compiler verifies and may complain about"
+ echo "correctness of some of the BIOS tables."
+ echo "These can give a pointer to possible malfunction of the system."
+ echo
+ echo "If you think you found a bug in the iasl compiler or related tools,"
+ echo "you can ask here for help: devel(a)acpica.org"
+ echo "You may also want to ask there if you are not sure whether it really"
+ echo "is a BIOS bug."
+ echo
+ echo "If you are sure you found a BIOS issue, complain to your hardware vendor."
+ echo "The iasl compiler typically provides a description of the warning/error in a way,"
+ echo "so that BIOS authors can easily fix it."
+ echo
+ echo "Options"
+ echo " -o output_dir: Copy tables to this directory instead of local one"
+ echo " -v: : be more verbose"
+ echo " -a acpidump : Use this acpidump file"
+ echo " instead of the tables from the local machine"
+ echo " -d options : Pass iasl disassemble options"
+ echo " -c options : Pass iasl compile options"
+ echo " will override -sa -cr -vr (default options)"
+ echo " -h : Show help"
+ exit 1
+}
+
+if [ "$(id -u)" != "0" ]; then
+ echo "This script must be run as root"
+ exit 1
+fi
+
+while getopts hva:o:c:d: name ; do
+ case $name in
+ o)
+ OUTPUT_DIR="$OPTARG"
+ if [ ! -d "$OUTPUT_DIR" ];then
+ mkdir "$OUTPUT_DIR"
+ if [[ $? != 0 ]];then
+ echo "Cannot create directory $OUTPUT_DIR"
+ exit 1
+ fi
+ elif [ ! -w "$OUTPUT_DIR" ];then
+ echo "Cannot write into directory $OUTPUT_DIR"
+ exit 1
+ fi
+
+ [[ $VERBOSE == 1 ]] && echo "Installing for architecture: $OUTPUT_DIR"
+ ;;
+ a)
+ ACPIDUMP="$OPTARG"
+ if [ ! -r "$ACPIDUMP" ];then
+ echo "$ACPIDUMP does not exist"
+ exit 1
+ fi
+ [[ $VERBOSE == 1 ]] && echo "acpidump file: $ACPIDUMP"
+ ;;
+ c)
+ COMPILE_OPTIONS="$OPTARG"
+ [[ $VERBOSE == 1 ]] && echo "Compile options: $COMPILE_OPTIONS"
+ ;;
+ c)
+ DISASSEMBLE_OPTIONS="$OPTARG"
+ [[ $VERBOSE == 1 ]] && echo "Disassemble options: $DISASSEMBLE_OPTIONS"
+ ;;
+ v)
+ VERBOSE=1
+ OUTPUT="1"
+ ;;
+ ?)
+ usage
+ ;;
+ esac
+done
+shift $(($OPTIND -1))
+
+shopt -s nocasematch
+TEMP_DIR=$(mktemp -d)
+[[ $VERBOSE == 1 ]] && echo "Using temporary directory: $TEMP_DIR"
+
+if [ -r "$ACPIDUMP" ];then
+ cp "$ACPIDUMP" "$TEMP_DIR"/acpidump
+fi
+
+pushd "$TEMP_DIR" >/dev/null
+
+mkdir log
+mkdir err
+if [ ! -r acpidump ];then
+ acpidump >acpidump
+fi
+acpixtract -a acpidump >&$OUTPUT 2>&1
+
+
+# ACPICA changed from uppercase to lowercase, try to find both:
+SDTs=$(ls [SD]DST*.dat 2>/dev/null)
+SDTs="${SDTs}$(ls [sd]sdt*.dat 2>/dev/null)"
+
+for file in *.dat;do
+ table=${file/.dat/}
+ # Enable case insensitive pattern matching
+
+ case $file in
+ [DS]SDT*.dat | [sd]sdt*.dat)
+ # Use other [sd]sdt*.dat tables to reference possible
+ # external symbols. Pass the table itself for disassembling
+ # comma separted.
+ # For example you we have:
+ # dsdt.dat ssdt1 ssdt2.dat
+ # and the current table to disassemble is ssdt1.dat the
+ # command has to be:
+ # iasl -e dsdt.dat,ssdt2.dat -d ssdt1.dat
+
+ # Get rid of the table which gets disassembled
+ # could have leading or trailing whitespace depending whether
+ # it is at the end or the beginning of the list
+ REF_TABLE_LIST=${SDTs/[[:space:]]$file/}
+ REF_TABLE_LIST=${SDTs/$file[[:space:]]/}
+ # Convert the whitespace list into a comma separated one:
+ REF_TABLE_LIST=${REF_TABLE_LIST//[[:space:]]/,}
+ echo "stdout and stderr of $file disassembling:" >log/${table}.log
+ iasl $DISASSEMBLE_OPTIONS -e ${REF_TABLE_LIST} -d $file 1>>log/${table}.log 2>&1
+ [[ $VERBOSE == 1 ]] && echo "iasl $DISASSEMBLE_OPTIONS -e ${REF_TABLE_LIST} -d $file 1>>log/${table}.log 2>&1"
+ iasl $COMPILE_OPTIONS ${table}.dsl 1>>log/${table}.log 2>>err/${table}.err
+ [[ $VERBOSE == 1 ]] && echo "iasl $COMPILE_OPTIONS ${table}.dsl 1>>log/${table}.log 2>>err/${table}.err"
+ ;;
+ *.dat)
+ iasl -d $file 1>log/${table}.log 2>&1
+ iasl -sa ${table}.dsl 1>log/${table}.log 2>err/${table}.err
+ ;;
+ esac
+done
+
+# remove empty error files
+rm $(find err -size 0)
+ERR_TABLES=$(ls err)
+ERR_TABLES=${ERR_TABLES//.err/}
+
+popd >/dev/null
+cp -r "$TEMP_DIR"/* "$OUTPUT_DIR"
+
+if [[ $VERBOSE == 1 ]];then
+ echo "Temporary directory (undeleted): $TEMP_DIR"
+else
+ rm -rf "$TEMP_DIR"
+fi
+
+if [ "$ERR_TABLES" = "" ];then
+ echo "No errors or warnings detected"
+ exit 0
+else
+ echo "These tables have warnings or errors (details in "$OUTPUT_DIR"/err directory):"
+ for err in $ERR_TABLES;do
+ echo -n $err $'\t'
+ sed -n -e 's/Compilation complete. \(.* Errors, .* Warnings\).*/\1/p' "$OUTPUT_DIR"/log/$err.log
+ done
+ exit 1
+fi
diff --git a/tools/power/acpi/acpi_validate.8 b/tools/power/acpi/acpi_validate.8
new file mode 100644
index 0000000..cd10694
--- /dev/null
+++ b/tools/power/acpi/acpi_validate.8
@@ -0,0 +1,72 @@
+.TH ACPI_VALIDATE 8
+.SH NAME
+acpi_validate \- Extracts, disassembles and recompiles ACPI BIOS tables.
+.SH SYNOPSIS
+.ft B
+.B acpica_validate [ \-o output_dir ] [ \-a acpidump ] [ \-v ] [ \-c compile_options ] [ \-d disassemble_options ]
+.SH DESCRIPTION
+\fBacpi_validate \fP extracts, disassembles and recompiles ACPI BIOS
+tables. The disassembled files will be copied into the local or specified
+output directory (-o option).
+
+The underlying iasl compiler verifies and may complain about correctness of
+some of the BIOS tables. Warnings or errors can give a pointer to possible
+malfunction of the system. The Linux kernel uses the same code base as the
+iasl interpreter which is used to validate tables.
+
+The ASL (ACPI Source Language) files (*.dsl) can get recompiled manually via
+\fBiasl -sa\fP and the resulting compilation (*.aml) can get passed to the
+kernel via the "Overriding ACPI tables via initrd" mechanism. Only use this
+feature if you know what you are doing. Read
+Documentation/acpi/initrd_table_override.txt (part of the kernel sources) for
+further information.
+
+If you think you found a bug in the iasl compiler or related
+tools, you can ask here for help: \fBdevel(a)acpica.org\fP
+
+You may also want to ask there if you are not sure whether it really
+is a BIOS bug.
+
+If you are sure you found a BIOS issue, complain to your hardware vendor. The
+iasl compiler typically provides a description of the warning/error in a way,
+so that BIOS authors can easily fix it.
+
+.SH OPTIONS
+\fB-o output_dir\fP
+
+The output directory where extracted, disassembled and
+recompiled tables are copied to. Compiler output is located in a log
+subdirectory, warnings and errors found by the compiler are located in the err
+directory.
+.PP
+\fB-a acpidump\fP
+
+Take this acpidump file instead of dumping and extracting
+ACPI tables from the local machine
+.PP
+\fB-v\fP
+
+Be more verbose
+.PP
+\fB-c options\fP
+
+Override default iasl compile options (default -sa -cr -vr)
+.PP
+\fB-d options\fP
+
+Override default iasl disassemble options
+
+.SH NOTES
+
+.B "acpi_validate"
+must be run as root.
+
+.SH REFERENCES
+ACPICA: https://acpica.org/
+
+.SH "SEE ALSO"
+.BR acpidump (8)
+
+.SH AUTHOR
+.nf
+Written by Thomas Renninger <trenn(a)suse.de>
--
1.7.6.1
9 years, 3 months
AcpiGetEventStatus: interface with behavior
by Andriy Gapon
AcpiGetEventStatus has an out parameter of type ACPI_EVENT_STATUS.
My impression that values of that type should conform to bit definitions
provided near the type declaration (ACPI_EVENT_FLAG_ENABLED,
ACPI_EVENT_FLAG_SET, etc).
But it seems that currently AcpiGetEventStatus returns only values zero and one
corresponding to inactive and active status.
The linux (adaption of the) code here
http://lxr.linux.no/#linux+v3.7.1/drivers/acpi/acpica/evxfevnt.c#L313
seems to be a bit more elaborate. It actually tries to produce a value that
conforms to the definitions by examining not only the status register but also
enable register.
It looks like AcpiHwGetGpeStatus is the model for how ACPI_EVENT_STATUS should
be populated. I am not sure if AcpiGetEventStatus should be made compatible
with ACPI_EVENT_STATUS or if its out type should be changed to something else.
Also, it looks that the comment near ACPI_EVENT_STATUS definitions is a little
bit out of sync.
--
Andriy Gapon
9 years, 3 months
You are my beloved
by Gorenko
Hello! I'm look for a man who will make me happy!
It is my dearest desire ..., it is a normal desire a beautiful woman.
In people I appreciate goodness, frankness, truthfulness and optimism. I am sensitive and passionate, communicative and cheerful.
I love movement and active life in any form!!! If you are interested http://bluejay.pochtamt.ru write me.
9 years, 3 months
[RFC PATCH] ACPI: Add boot option to disable auto return object repair
by Lv Zheng
There is automatic return object repair mechanism implemented in
ACPICA which can not handle all of the issues exposed by BIOS
currently. This patch allow a kernel boots up without such
workarounds enabled. A better choice should refine the repair
mechanism to allow more robust evaluation result.
Signed-off-by: Lv Zheng <lv.zheng(a)intel.com>
---
drivers/acpi/bus.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index 01708a1..e33577f 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -805,6 +805,18 @@ static int __init acpi_bus_init(void)
struct kobject *acpi_kobj;
EXPORT_SYMBOL_GPL(acpi_kobj);
+static int __init acpi_disable_repair(char *s)
+{
+ printk(KERN_NOTICE PREFIX
+ "ACPI: Predefined names repair disabled\n");
+
+ acpi_gbl_disable_auto_repair = TRUE;
+
+ return 1;
+}
+
+__setup("acpi_no_repair", acpi_disable_repair);
+
static int __init acpi_init(void)
{
int result;
--
1.7.10.4
9 years, 3 months
[PATCH 1/1] ACPICA: Table: Add VRTC table support.
by Lv Zheng
VRTC is used in Intel MID platforms as a replacement of the traditional
x86 RTC. VRTC table can be found in the recent ACPI BIOS enabled MID
platforms. The format of this table has been defined in the "Simple
Firmware Interface Specification".
This patch introduces VRTC table support into ACPICA.
Signed-off-by: Lv Zheng <lv.zheng(a)intel.com>
---
source/common/dmtable.c | 2 ++
source/common/dmtbdump.c | 52 ++++++++++++++++++++++++++++++++++++++++++
source/common/dmtbinfo.c | 22 ++++++++++++++++++
source/compiler/dtcompiler.h | 5 ++++
source/compiler/dttable.c | 25 ++++++++++++++++++++
source/compiler/dttemplate.h | 11 +++++++++
source/include/acdisasm.h | 6 +++++
source/include/actbl2.h | 27 ++++++++++++++++++++++
8 files changed, 150 insertions(+)
diff --git a/source/common/dmtable.c b/source/common/dmtable.c
index 6c2fbdf..7f4696f 100644
--- a/source/common/dmtable.c
+++ b/source/common/dmtable.c
@@ -384,6 +384,8 @@ ACPI_DMTABLE_DATA AcpiDmTableData[] =
{ACPI_SIG_TCPA, AcpiDmTableInfoTcpa, NULL, NULL, TemplateTcpa, "Trusted Computing Platform Alliance table"},
{ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, NULL, NULL, TemplateTpm2, "Trusted Platform Module hardware interface table"},
{ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, DtCompileUefi, TemplateUefi, "UEFI Boot Optimization Table"},
+ {ACPI_SIG_VRTC, AcpiDmTableInfoVrtc, AcpiDmDumpVrtc, DtCompileVrtc, TemplateVrtc, "SFI - Virutal Real Time Clock Table"},
+ {ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, NULL, TemplateWaet, "Windows ACPI Emulated Devices Table"},
{ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, NULL, TemplateWaet, "Windows ACPI Emulated Devices Table"},
{ACPI_SIG_WDAT, NULL, AcpiDmDumpWdat, DtCompileWdat, TemplateWdat, "Watchdog Action Table"},
{ACPI_SIG_WDDT, AcpiDmTableInfoWddt, NULL, NULL, TemplateWddt, "Watchdog Description Table"},
diff --git a/source/common/dmtbdump.c b/source/common/dmtbdump.c
index d4b67b0..0c2bd53 100644
--- a/source/common/dmtbdump.c
+++ b/source/common/dmtbdump.c
@@ -2450,6 +2450,58 @@ NextSubTable:
/*******************************************************************************
*
+ * FUNCTION: AcpiDmDumpVrtc
+ *
+ * PARAMETERS: Table - A VRTC table
+ *
+ * RETURN: None
+ *
+ * DESCRIPTION: Format the contents of a VRTC
+ *
+ ******************************************************************************/
+
+void
+AcpiDmDumpVrtc (
+ ACPI_TABLE_HEADER *Table)
+{
+ ACPI_STATUS Status;
+ UINT32 Offset = sizeof (ACPI_TABLE_VRTC);
+ ACPI_VRTC_ENTRY *SubTable;
+
+
+ /* Main table */
+
+ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoVrtc);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ /* Sub-tables */
+
+ SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, Table, Offset);
+ while (Offset < Table->Length)
+ {
+ /* Common sub-table header */
+
+ AcpiOsPrintf ("\n");
+ Status = AcpiDmDumpTable (Table->Length, Offset, SubTable,
+ sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0);
+ if (ACPI_FAILURE (Status))
+ {
+ return;
+ }
+
+ /* Point to next sub-table */
+
+ Offset += sizeof (ACPI_VRTC_ENTRY);
+ SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, SubTable, sizeof (ACPI_VRTC_ENTRY));
+ }
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiDmDumpWdat
*
* PARAMETERS: Table - A WDAT table
diff --git a/source/common/dmtbinfo.c b/source/common/dmtbinfo.c
index e2790f3..05cc2f1 100644
--- a/source/common/dmtbinfo.c
+++ b/source/common/dmtbinfo.c
@@ -267,6 +267,7 @@
#define ACPI_SRAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_CPU_AFFINITY,f)
#define ACPI_SRAT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_MEM_AFFINITY,f)
#define ACPI_SRAT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f)
+#define ACPI_VRTC0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_VRTC_ENTRY,f)
#define ACPI_WDAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WDAT_ENTRY,f)
/*
@@ -2107,6 +2108,27 @@ ACPI_DMTABLE_INFO AcpiDmTableInfoUefi[] =
/*******************************************************************************
*
+ * VRTC - Virtual Real Time Clock Table
+ *
+ ******************************************************************************/
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc[] =
+{
+ ACPI_DMT_TERMINATOR
+};
+
+/* VRTC Subtables - VRTC Entry */
+
+ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc0[] =
+{
+ {ACPI_DMT_GAS, ACPI_VRTC0_OFFSET (PhysicalAddress), "PhysicalAddress", 0},
+ {ACPI_DMT_UINT32, ACPI_VRTC0_OFFSET (Irq), "IRQ", 0},
+ ACPI_DMT_TERMINATOR
+};
+
+
+/*******************************************************************************
+ *
* WAET - Windows ACPI Emulated devices Table
*
******************************************************************************/
diff --git a/source/compiler/dtcompiler.h b/source/compiler/dtcompiler.h
index 9bf4889..c878a4a 100644
--- a/source/compiler/dtcompiler.h
+++ b/source/compiler/dtcompiler.h
@@ -544,6 +544,10 @@ DtCompileUefi (
void **PFieldList);
ACPI_STATUS
+DtCompileVrtc (
+ void **PFieldList);
+
+ACPI_STATUS
DtCompileWdat (
void **PFieldList);
@@ -595,6 +599,7 @@ extern const unsigned char TemplateSrat[];
extern const unsigned char TemplateTcpa[];
extern const unsigned char TemplateTpm2[];
extern const unsigned char TemplateUefi[];
+extern const unsigned char TemplateVrtc[];
extern const unsigned char TemplateWaet[];
extern const unsigned char TemplateWdat[];
extern const unsigned char TemplateWddt[];
diff --git a/source/compiler/dttable.c b/source/compiler/dttable.c
index a02b633..7029d26 100644
--- a/source/compiler/dttable.c
+++ b/source/compiler/dttable.c
@@ -2046,6 +2046,31 @@ DtCompileUefi (
/******************************************************************************
*
+ * FUNCTION: DtCompileVrtc
+ *
+ * PARAMETERS: List - Current field list pointer
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Compile VRTC.
+ *
+ *****************************************************************************/
+
+ACPI_STATUS
+DtCompileVrtc (
+ void **List)
+{
+ ACPI_STATUS Status;
+
+
+ Status = DtCompileTwoSubtables (List,
+ AcpiDmTableInfoVrtc, AcpiDmTableInfoVrtc0);
+ return (Status);
+}
+
+
+/******************************************************************************
+ *
* FUNCTION: DtCompileWdat
*
* PARAMETERS: List - Current field list pointer
diff --git a/source/compiler/dttemplate.h b/source/compiler/dttemplate.h
index 573e073..fd00adc 100644
--- a/source/compiler/dttemplate.h
+++ b/source/compiler/dttemplate.h
@@ -965,6 +965,17 @@ const unsigned char TemplateUefi[] =
0x0C,0x0D,0x0E,0x0F,0x00,0x00 /* 00000030 "......" */
};
+const unsigned char TemplateVrtc[] =
+{
+ 0x56,0x52,0x54,0x43,0x34,0x00,0x00,0x00, /* 00000000 "VRTC4..." */
+ 0x01,0xB0,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */
+ 0x4C,0x41,0x4E,0x46,0x4F,0x52,0x44,0x43, /* 00000010 "LANFORDC" */
+ 0x03,0x00,0x00,0x00,0x4D,0x53,0x46,0x54, /* 00000018 "....MSFT" */
+ 0x0D,0x00,0x00,0x01,0x00,0x08,0x00,0x00, /* 00000020 "........" */
+ 0x00,0x8C,0x10,0xFF,0x00,0x00,0x00,0x00, /* 00000028 "........" */
+ 0x09,0x00,0x00,0x00 /* 00000030 "...." */
+};
+
const unsigned char TemplateWaet[] =
{
0x57,0x41,0x45,0x54,0x28,0x00,0x00,0x00, /* 00000000 "WAET(..." */
diff --git a/source/include/acdisasm.h b/source/include/acdisasm.h
index 229cda7..7d2869d 100644
--- a/source/include/acdisasm.h
+++ b/source/include/acdisasm.h
@@ -415,6 +415,8 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat2[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpa[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoUefi[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc[];
+extern ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc0[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoWaet[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoWdat[];
extern ACPI_DMTABLE_INFO AcpiDmTableInfoWdat0[];
@@ -561,6 +563,10 @@ AcpiDmDumpSrat (
ACPI_TABLE_HEADER *Table);
void
+AcpiDmDumpVrtc (
+ ACPI_TABLE_HEADER *Table);
+
+void
AcpiDmDumpWdat (
ACPI_TABLE_HEADER *Table);
diff --git a/source/include/actbl2.h b/source/include/actbl2.h
index 378b39b..7c0adcb 100644
--- a/source/include/actbl2.h
+++ b/source/include/actbl2.h
@@ -151,6 +151,7 @@
#define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */
#define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */
#define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */
+#define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */
#define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */
#define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */
#define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */
@@ -1254,6 +1255,32 @@ typedef struct acpi_table_uefi
/*******************************************************************************
*
+ * VRTC - Virtual Real Time Clock Table
+ * Version 1
+ *
+ * Conforms to "Simple Firmware Interface Specification",
+ * Draft 0.8.2, Oct 19, 2010
+ * NOTE: ACPI VRTC is equivalent to SFI MRTC table.
+ *
+ ******************************************************************************/
+
+typedef struct acpi_table_vrtc
+{
+ ACPI_TABLE_HEADER Header; /* Common ACPI table header */
+
+} ACPI_TABLE_VRTC;
+
+/* VRTC entry */
+
+typedef struct acpi_vrtc_entry
+{
+ ACPI_GENERIC_ADDRESS PhysicalAddress;
+ UINT32 Irq;
+} ACPI_VRTC_ENTRY;
+
+
+/*******************************************************************************
+ *
* WAET - Windows ACPI Emulated devices Table
* Version 1
*
--
1.7.10
9 years, 3 months
I am looking for a male friend
by Belousova
I'm looking for my soul mate!
I am a young and confident lady.
I do believe in love founded on a deep passion and even deeper respect
And I know how to love and cherish a truly fine man. I appreciate in men their ability to communicate with lady. I am a kind and caring woman and I have nothing to hide from you.
My dream is to create a family with a deserving man.
Here are my photos and my profile, perhaps http://tinyurl.com/hsmiZbQK9O you are my destiny.
9 years, 3 months
ACPICA version 20130117 released
by Moore, Robert
17 January 2013. Summary of changes for version 20130117:
This release is available at https://www.acpica.org/downloads
The ACPI 5.0 specification is available at www.acpi.info
1) ACPICA Kernel-resident Subsystem:
Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to return either 1 or 2 integers. Although the ACPI spec defines the \_Sx objects to return a package containing one integer, most BIOS code returns two integers and the previous code reflects that. However, we also need to support BIOS code that actually implements to the ACPI spec, and this change reflects this.
Fixed two issues with the ACPI_DEBUG_PRINT macros:
1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for C compilers that require this support.
2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since ACPI_DEBUG is already used by many of the various hosts.
Updated all ACPICA copyrights and signons to 2013. Added the 2013 copyright to all module headers and signons, including the standard Linux header. This affects virtually every file in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and the test suites.
Example Code and Data Size: These are the sizes for the OS-independent acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code includes the debug output trace mechanism and has a much larger code and data size.
Previous Release:
Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
Current Release:
Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
2) iASL Compiler/Disassembler and Tools:
Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and prevent a possible fault on some hosts. Some C libraries modify the arg pointer parameter to vfprintf making it difficult to call it twice in the AcpiOsVprintf function. Use a local buffer to workaround this issue. This does not affect the Windows OSL since the Win C library does not modify the arg pointer. Chao Guan, Bob Moore.
iASL: Fixed a possible infinite loop when the maximum error count is reached. If an output file other than the .AML file is specified (such as a listing file), and the maximum number of errors is reached, do not attempt to flush data to the output file(s) as the compiler is aborting. This can cause an infinite loop as the max error count code essentially keeps calling itself.
iASL/Disassembler: Added an option (-in) to ignore NOOP opcodes/operators. Implemented for both the compiler and the disassembler. Often, the NOOP opcode is used as padding for packages that are changed dynamically by the BIOS. When disassembled and recompiled, these NOOPs will cause syntax errors. This option causes the disassembler to ignore all NOOP opcodes (0xA3), and it also causes the compiler to ignore all ASL source code NOOP statements as well.
Debugger: Enhanced the Sleep command to execute all sleep states. This change allows Sleep to be invoked with no arguments and causes the debugger to execute all of the sleep states, 0-5, automatically.
9 years, 4 months