ACPICA 20170303 Release
Subsystems (2)
cover ACPICA 20170303 Release
The 20170303 ACPICA kernel-resident subsystem updates are linuxized based on the linux-pm/linux-next branch.
The patchset has passed the following build/boot tests. Build tests are performed as follows:
1. i386 + allyes
2. i386 + allno
3. i386 + default + ACPI_DEBUGGER=y
4. i386 + default + ACPI_DEBUGGER=n + ACPI_DEBUG=y
5. i386 + default + ACPI_DEBUG=n + ACPI=y
6. i386 + default + ACPI=n
7. x86_64 + allyes
8. x86_64 + allno
9. x86_64 + default + ACPI_DEBUGGER=y
10.x86_64 + default + ACPI_DEBUGGER=n + ACPI_DEBUG=y 11.x86_64 + default + ACPI_DEBUG=n + ACPI=y
12.x86_64 + default + ACPI=n
Boot tests are performed as follows:
1. x86_64 + default + ACPI_DEBUGGER=y
Where:
1. i386: machine named as "Dell Inspiron Mini 1010"
2. x86_64: machine named as "Microsoft Surface Pro 3"
3. default: kernel configuration with following items enabled:
All hardware drivers related to the machines of i386/x86_64 All "drivers/acpi" configurations
All "drivers/platform" drivers
All other drivers that link the APIs provided by ACPICA subsystem
The divergences checking result:
Before applying (20170119 Release):
369 lines
After applying (20170303 Release):
369 lines
Bob Moore (9):
ACPICA: Disassembler: Enhance resource descriptor detection
ACPICA: Update some function headers, no funtional change
ACPICA: Fix a module for excessive debug output
ACPICA: Fix several incorrect invocations of ACPICA return macro
ACPICA: Update for automatic repair code for objects returned by
evaluate_object
ACPICA: Cleanup AML opcode definitions, no functional change
ACPICA: iasl: add ASL conversion tool
ACPICA: Local cache support: Allow small cache objects
ACPICA: Update version to 20170303
Colin Ian King (1):
ACPICA: debugger: fix memory leak on Pathname
David E. Box (1):
ACPICA: Disassembler: Do not unconditionally remove temporary names
Jung-uk Kim (1):
ACPICA: Fix build for FreeBSD kernel.
Lv Zheng (2):
ACPICA: Debugger: Add interpreter blocking mark for single-step mode
ACPICA: iasl: Fix IORT SMMU GSI disassembling
Seunghun Han (1):
ACPICA: Namespace: fix operand cache leak
drivers/acpi/acpica/acconvert.h | 144 ++++++++++++++++++++++++++++++++++++++++ drivers/acpi/acpica/acglobal.h | 53 +++++++++++++++ drivers/acpi/acpica/aclocal.h | 106 ++++++++++++++++++++++++----- drivers/acpi/acpica/acmacros.h | 35 ++++++++++ drivers/acpi/acpica/acopcode.h | 2 + drivers/acpi/acpica/amlcode.h | 99 +++++++++++++-------------- drivers/acpi/acpica/dbmethod.c | 1 + drivers/acpi/acpica/dbxface.c | 5 +- drivers/acpi/acpica/dscontrol.c | 2 +- drivers/acpi/acpica/dsmthdat.c | 3 +- drivers/acpi/acpica/dsobject.c | 15 +++-- drivers/acpi/acpica/dsopcode.c | 4 +- drivers/acpi/acpica/dsutils.c | 8 +-- drivers/acpi/acpica/dswexec.c | 2 +- drivers/acpi/acpica/dswload2.c | 2 +- drivers/acpi/acpica/exmisc.c | 16 ++--- drivers/acpi/acpica/exnames.c | 4 +- drivers/acpi/acpica/exoparg1.c | 17 +++-- drivers/acpi/acpica/exoparg2.c | 4 +- drivers/acpi/acpica/exoparg6.c | 16 ++--- drivers/acpi/acpica/exresolv.c | 3 +- drivers/acpi/acpica/exstore.c | 5 +- drivers/acpi/acpica/exstoren.c | 2 +- drivers/acpi/acpica/hwvalid.c | 18 ++--- drivers/acpi/acpica/nsaccess.c | 2 +- drivers/acpi/acpica/nsrepair.c | 16 +---- drivers/acpi/acpica/nsrepair2.c | 6 +- drivers/acpi/acpica/nsutils.c | 29 ++++---- drivers/acpi/acpica/psargs.c | 29 +++++++- drivers/acpi/acpica/psloop.c | 34 +++++++++- drivers/acpi/acpica/psobject.c | 38 +++++++++++ drivers/acpi/acpica/psopcode.c | 15 +++-- drivers/acpi/acpica/psopinfo.c | 2 +- drivers/acpi/acpica/psparse.c | 6 +- drivers/acpi/acpica/pstree.c | 9 ++- drivers/acpi/acpica/psutils.c | 11 +++ drivers/acpi/acpica/utalloc.c | 50 ++++++++++++++ drivers/acpi/acpica/utcache.c | 2 +- drivers/acpi/acpica/utdebug.c | 1 + drivers/acpi/acpica/utresrc.c | 9 +++ drivers/acpi/acpica/utxferror.c | 16 ++--- include/acpi/acconfig.h | 1 + include/acpi/acpixf.h | 2 +- include/acpi/actbl2.h | 10 +++ 44 files changed, 659 insertions(+), 195 deletions(-) create mode 100644 drivers/acpi/acpica/acconvert.h
Signature · 1 line
2.7.4
PATCH 1/15 ACPICA: Disassembler: Enhance resource descriptor detection
From: Bob Moore <[email protected]>
ACPICA commit ba5020b2dbe1538e4ccd7ac2dfd8843a690c007f
This change enhances the detection of resource descriptors within a buffer object. For the end_tag opcode, the second byte is defined to be either a checksum or zero. All known ASL compilers insert a zero for this byte. The disassembler now ensures this byte is zero before deciding that a buffer should be disassembled to a resource descriptor. This helps eliminate incorrect decisions when attempting to disassemble a buffer to a resource descriptor.
--- drivers/acpi/acpica/utresrc.c | 9 +++++++++ 1 file changed, 9 insertions(+)
drivers/acpi/acpica/utresrc.c +9 -0
@@ -474,6 +474,15 @@ acpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state,return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG ); } +/* +* The end_tag opcode must be followed by a zero byte. +* Although this byte is technically defined to be a checksum, +* in practice, all ASL compilers set this byte to zero. +*/ +if (*(aml +1 ) !=0 ) { +return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG ); + } +/* Return the pointer to the end_tag if requested */ if (!user_function) {
Signature · 1 line
2.7.4
Re: [PATCH 01/15] ACPICA: Disassembler: Enhance resource descriptor detection
Quoted 11 lines · Lv Zheng
From: Bob Moore <[email protected]>
ACPICA commit
ba5020b2dbe1538e4ccd7ac2dfd8843a690c007fThis change enhances the detection of resource descriptors within a buffer object. For the
end_tagopcode, the second byte is defined to be either a checksum or zero. All known ASL compilers insert a zero for this byte. The disassembler now ensures this byte is zero before deciding that a buffer should be disassembled to a resource descriptor. This helps eliminate incorrect decisions when attempting to disassemble a buffer to a resource descriptor.
This commit breaks things on my platform. I'm testing on an HPE ProLiant DL380Gen9 but I also see errors on other ProLiant servers, including much older ones.
With this commit, I see errors like:
[ 4.496926] acpi PNP0A03:00: [Firmware Bug]: no secondary bus range in _CRS [ 4.496929] ACPI: PCI Root Bridge [UNC0] (domain 0000 [bus 7f-ff]) [ 4.496934] acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 4.496938] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM [ 4.496949] acpi PNP0A03:00: failed to parse _CRS method, error code -5 [ 4.496950] acpi PNP0A03:00: Bus 0000:7f not present in PCI namespace [ 4.499111] acpi PNP0A03:01: [Firmware Bug]: no secondary bus range in _CRS [ 4.499113] ACPI: PCI Root Bridge [UNC1] (domain 0000 [bus ff]) [ 4.499115] acpi PNP0A03:01: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 4.499118] acpi PNP0A03:01: _OSC failed (AE_NOT_FOUND); disabling ASPM [ 4.499126] acpi PNP0A03:01: failed to parse _CRS method, error code -5 [ 4.499127] acpi PNP0A03:01: Bus 0000:ff not present in PCI namespace [ 4.502133] acpi PNP0A08:00: [Firmware Bug]: no secondary bus range in _CRS [ 4.502136] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 4.502138] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 4.502268] acpi PNP0A08:00: _OSC: platform does not support [AER] [ 4.502386] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME PCIeCapability] [ 4.502387] acpi PNP0A08:00: FADT indicates ASPM is unsupported, using BIOS configuration [ 4.502646] acpi PNP0A08:00: failed to parse _CRS method, error code -5 [ 4.502647] acpi PNP0A08:00: Bus 0000:00 not present in PCI namespace [ 4.504816] acpi PNP0A08:01: [Firmware Bug]: no secondary bus range in _CRS [ 4.504819] ACPI: PCI Root Bridge [PCI1] (domain 0000 [bus 80-ff]) [ 4.504821] acpi PNP0A08:01: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 4.504936] acpi PNP0A08:01: _OSC: platform does not support [AER] [ 4.505042] acpi PNP0A08:01: _OSC: OS now controls [PCIeHotplug PME PCIeCapability] [ 4.505043] acpi PNP0A08:01: FADT indicates ASPM is unsupported, using BIOS configuration [ 4.505057] acpi PNP0A08:01: failed to parse _CRS method, error code -5 [ 4.505058] acpi PNP0A08:01: Bus 0000:80 not present in PCI namespace ... [ 4.524563] PCI: Using ACPI for IRQ routing [ 4.524564] PCI: Discovered peer bus 00 [ 4.524565] PCI: root bus 00: using default resources [ 4.524566] PCI: Probing PCI hardware (bus 00) [ 4.524586] ACPI: \: failed to evaluate _DSM (0x1001)
This causes random things to break, such as the ability for an ACPI method to make IPMI calls because ipmi_si doesn't find the ACPI-specified BMC.
Quoted 13 lines
Signed-off-by Bob Moore <[email protected]>Signed-off-by Lv Zheng <[email protected]>--- drivers/acpi/acpica/utresrc.c | 9 +++++++++ 1 file changed, 9 insertions(+)drivers/acpi/acpica/utresrc.c +0
-0
drivers/acpi/acpica/utresrc.c acpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state, · line 483
Quoted 10 lines
drivers/acpi/acpica/utresrc.c +7
-0@@ -474,6 +474,15 @@ acpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state,return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG ); } +/* +* The end_tag opcode must be followed by a zero byte. +* Although this byte is technically defined to be a checksum, +* in practice, all ASL compilers set this byte to zero. +*/ +if (*(aml +1 ) !=0 ) { +return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG );
If I replace the return with an ACPI_ERROR, I get output like this:
[ 4.497662] ACPI Error: Non-zero value: 0xE5 (20170303/utresrc-484) [ 4.500111] ACPI Error: Non-zero value: 0xE5 (20170303/utresrc-484) [ 4.506862] ACPI Error: Non-zero value: 0xE5 (20170303/utresrc-484) [ 4.509011] ACPI Error: Non-zero value: 0xE5 (20170303/utresrc-484) [ 4.516777] ACPI Error: Non-zero value: 0x50 (20170303/utresrc-484) [ 4.519710] ACPI Error: Non-zero value: 0x50 (20170303/utresrc-484) [ 4.541214] ACPI Error: Non-zero value: 0xE4 (20170303/utresrc-484) [ 4.543670] ACPI Error: Non-zero value: 0xE4 (20170303/utresrc-484) [ 4.584594] ACPI Error: Non-zero value: 0x07 (20170303/utresrc-484) [ 4.586754] ACPI Error: Non-zero value: 0x11 (20170303/utresrc-484)
By not returning an error, I no longer see the other errors and everything seems to work.
I haven't yet determined whether the non-zero value is a valid checksum but it's definitely not zero.
If the byte is technically defined to be a checksum, then the code ought to accept a valid checksum. If it turns out that my platform isn't actually providing a valid checksum, then I'd like to see a warning or something rather than a error, since this change will break a lot of systems.
-- ljk
Quoted 6 lines
drivers/acpi/acpica/utresrc.c +2
-0+ } +/* Return the pointer to the end_tag if requested */ if (!user_function) {
Re: [PATCH 01/15] ACPICA: Disassembler: Enhance resource descriptor detection
Quoted 97 lines · Linda Knippers
Quoted 11 lines · Lv Zheng
From: Bob Moore <[email protected]>
ACPICA commit
ba5020b2dbe1538e4ccd7ac2dfd8843a690c007fThis change enhances the detection of resource descriptors within a buffer object. For the
end_tagopcode, the second byte is defined to be either a checksum or zero. All known ASL compilers insert a zero for this byte. The disassembler now ensures this byte is zero before deciding that a buffer should be disassembled to a resource descriptor. This helps eliminate incorrect decisions when attempting to disassemble a buffer to a resource descriptor.This commit breaks things on my platform. I'm testing on an HPE ProLiant DL380Gen9 but I also see errors on other ProLiant servers, including much older ones.
With this commit, I see errors like:
[ 4.496926] acpi PNP0A03:00: [Firmware Bug]: no secondary bus range in _CRS [ 4.496929] ACPI: PCI Root Bridge [UNC0] (domain 0000 [bus 7f-ff]) [ 4.496934] acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 4.496938] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM [ 4.496949] acpi PNP0A03:00: failed to parse _CRS method, error code -5 [ 4.496950] acpi PNP0A03:00: Bus 0000:7f not present in PCI namespace [ 4.499111] acpi PNP0A03:01: [Firmware Bug]: no secondary bus range in _CRS [ 4.499113] ACPI: PCI Root Bridge [UNC1] (domain 0000 [bus ff]) [ 4.499115] acpi PNP0A03:01: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 4.499118] acpi PNP0A03:01: _OSC failed (AE_NOT_FOUND); disabling ASPM [ 4.499126] acpi PNP0A03:01: failed to parse _CRS method, error code -5 [ 4.499127] acpi PNP0A03:01: Bus 0000:ff not present in PCI namespace [ 4.502133] acpi PNP0A08:00: [Firmware Bug]: no secondary bus range in _CRS [ 4.502136] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 4.502138] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 4.502268] acpi PNP0A08:00: _OSC: platform does not support [AER] [ 4.502386] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME PCIeCapability] [ 4.502387] acpi PNP0A08:00: FADT indicates ASPM is unsupported, using BIOS configuration [ 4.502646] acpi PNP0A08:00: failed to parse _CRS method, error code -5 [ 4.502647] acpi PNP0A08:00: Bus 0000:00 not present in PCI namespace [ 4.504816] acpi PNP0A08:01: [Firmware Bug]: no secondary bus range in _CRS [ 4.504819] ACPI: PCI Root Bridge [PCI1] (domain 0000 [bus 80-ff]) [ 4.504821] acpi PNP0A08:01: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 4.504936] acpi PNP0A08:01: _OSC: platform does not support [AER] [ 4.505042] acpi PNP0A08:01: _OSC: OS now controls [PCIeHotplug PME PCIeCapability] [ 4.505043] acpi PNP0A08:01: FADT indicates ASPM is unsupported, using BIOS configuration [ 4.505057] acpi PNP0A08:01: failed to parse _CRS method, error code -5 [ 4.505058] acpi PNP0A08:01: Bus 0000:80 not present in PCI namespace ... [ 4.524563] PCI: Using ACPI for IRQ routing [ 4.524564] PCI: Discovered peer bus 00 [ 4.524565] PCI: root bus 00: using default resources [ 4.524566] PCI: Probing PCI hardware (bus 00) [ 4.524586] ACPI: \: failed to evaluate _DSM (0x1001)This causes random things to break, such as the ability for an ACPI method to make IPMI calls because
ipmi_sidoesn't find the ACPI-specified BMC.Quoted 13 lines
Signed-off-by Bob Moore <[email protected]>Signed-off-by Lv Zheng <[email protected]>--- drivers/acpi/acpica/utresrc.c | 9 +++++++++ 1 file changed, 9 insertions(+)drivers/acpi/acpica/utresrc.c +0
-0drivers/acpi/acpica/utresrc.c acpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state, · line 483
Quoted 10 lines
drivers/acpi/acpica/utresrc.c +7
-0@@ -474,6 +474,15 @@ acpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state,return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG ); } +/* +* The end_tag opcode must be followed by a zero byte. +* Although this byte is technically defined to be a checksum, +* in practice, all ASL compilers set this byte to zero. +*/ +if (*(aml +1 ) !=0 ) { +return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG );If I replace the return with an
ACPI_ERROR, I get output like this:[ 4.497662] ACPI Error: Non-zero value: 0xE5 (20170303/utresrc-484) [ 4.500111] ACPI Error: Non-zero value: 0xE5 (20170303/utresrc-484) [ 4.506862] ACPI Error: Non-zero value: 0xE5 (20170303/utresrc-484) [ 4.509011] ACPI Error: Non-zero value: 0xE5 (20170303/utresrc-484) [ 4.516777] ACPI Error: Non-zero value: 0x50 (20170303/utresrc-484) [ 4.519710] ACPI Error: Non-zero value: 0x50 (20170303/utresrc-484) [ 4.541214] ACPI Error: Non-zero value: 0xE4 (20170303/utresrc-484) [ 4.543670] ACPI Error: Non-zero value: 0xE4 (20170303/utresrc-484) [ 4.584594] ACPI Error: Non-zero value: 0x07 (20170303/utresrc-484) [ 4.586754] ACPI Error: Non-zero value: 0x11 (20170303/utresrc-484)By not returning an error, I no longer see the other errors and everything seems to work.
Quoted 7 lines
I haven't yet determined whether the non-zero value is a valid checksum but it's definitely not zero.
If the byte is technically defined to be a checksum, then the code ought to accept a valid checksum. If it turns out that my platform isn't actually providing a valid checksum, then I'd like to see a warning or something rather than a error, since this change will break a lot of systems.
I talked to our FW team and we do generate checksums and not a zero for at least some
of the AML. Please revert this change until you can also validate a checksum. Or shall I post a patch to remove the check?
Thanks,
-- ljk
Quoted 10 lines
-- ljk
Quoted 6 lines
drivers/acpi/acpica/utresrc.c +2
-0+ } +/* Return the pointer to the end_tag if requested */ if (!user_function) {
Rafael J. Wysocki
maintainerRe: [PATCH 01/15] ACPICA: Disassembler: Enhance resource descriptor detection
Quoted 135 lines · Linda Knippers
Quoted 126 lines · Linda Knippers
Quoted 5 lines · Lv Zheng
From: Bob Moore <[email protected]>
ACPICA commit
ba5020b2dbe1538e4ccd7ac2dfd8843a690c007fQuoted 7 lines
This change enhances the detection of resource descriptors within a buffer object. For the
end_tagopcode, the second byte is defined to be either a checksum or zero. All known ASL compilers insert a zero for this byte. The disassembler now ensures this byte is zero before deciding that a buffer should be disassembled to a resource descriptor. This helps eliminate incorrect decisions when attempting to disassemble a buffer to a resource descriptor.This commit breaks things on my platform. I'm testing on an HPE ProLiant DL380Gen9
but I also see errors on other ProLiant servers, including much older ones.With this commit, I see errors like:
[ 4.496926] acpi PNP0A03:00: [Firmware Bug]: no secondary bus range in _CRS [ 4.496929] ACPI: PCI Root Bridge [UNC0] (domain 0000 [bus 7f-ff]) [ 4.496934] acpi PNP0A03:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 4.496938] acpi PNP0A03:00: _OSC failed (AE_NOT_FOUND); disabling ASPM [ 4.496949] acpi PNP0A03:00: failed to parse _CRS method, error code -5 [ 4.496950] acpi PNP0A03:00: Bus 0000:7f not present in PCI namespace [ 4.499111] acpi PNP0A03:01: [Firmware Bug]: no secondary bus range in _CRS [ 4.499113] ACPI: PCI Root Bridge [UNC1] (domain 0000 [bus ff]) [ 4.499115] acpi PNP0A03:01: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 4.499118] acpi PNP0A03:01: _OSC failed (AE_NOT_FOUND); disabling ASPM [ 4.499126] acpi PNP0A03:01: failed to parse _CRS method, error code -5 [ 4.499127] acpi PNP0A03:01: Bus 0000:ff not present in PCI namespace [ 4.502133] acpi PNP0A08:00: [Firmware Bug]: no secondary bus range in _CRS [ 4.502136] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 4.502138] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 4.502268] acpi PNP0A08:00: _OSC: platform does not support [AER] [ 4.502386] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME PCIeCapability] [ 4.502387] acpi PNP0A08:00: FADT indicates ASPM is unsupported, using BIOS configuration [ 4.502646] acpi PNP0A08:00: failed to parse _CRS method, error code -5 [ 4.502647] acpi PNP0A08:00: Bus 0000:00 not present in PCI namespace [ 4.504816] acpi PNP0A08:01: [Firmware Bug]: no secondary bus range in _CRS [ 4.504819] ACPI: PCI Root Bridge [PCI1] (domain 0000 [bus 80-ff]) [ 4.504821] acpi PNP0A08:01: _OSC: OS supports [ExtendedConfig ASPM ClockPM Segments MSI] [ 4.504936] acpi PNP0A08:01: _OSC: platform does not support [AER] [ 4.505042] acpi PNP0A08:01: _OSC: OS now controls [PCIeHotplug PME PCIeCapability] [ 4.505043] acpi PNP0A08:01: FADT indicates ASPM is unsupported, using BIOS configuration [ 4.505057] acpi PNP0A08:01: failed to parse _CRS method, error code -5 [ 4.505058] acpi PNP0A08:01: Bus 0000:80 not present in PCI namespace ... [ 4.524563] PCI: Using ACPI for IRQ routing [ 4.524564] PCI: Discovered peer bus 00 [ 4.524565] PCI: root bus 00: using default resources [ 4.524566] PCI: Probing PCI hardware (bus 00) [ 4.524586] ACPI: \: failed to evaluate _DSM (0x1001)This causes random things to break, such as the ability for an ACPI method to make IPMI calls because
ipmi_sidoesn't find the ACPI-specified BMC.Quoted 29 lines
Signed-off-by Bob Moore <[email protected]>Signed-off-by Lv Zheng <[email protected]>--- drivers/acpi/acpica/utresrc.c | 9 +++++++++ 1 file changed, 9 insertions(+)drivers/acpi/acpica/utresrc.c +2
-0@@ -474,6 +474,15 @@ acpi_ut_walk_aml_resources(struct acpi_walk_state *walk_state,return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG ); } +/* +* The end_tag opcode must be followed by a zero byte.
+ * Although this byte is technically defined to
be a checksum,
+ * in practice, all ASL compilers set this byte
to zero.drivers/acpi/acpica/utresrc.c +3
-0+*/ +if (*(aml +1 ) !=0 ) { +Quoted 1 line
return_ACPI_STATUS(AE_AML_NO_RESOURCE_END_TAG);If I replace the return with an
ACPI_ERROR, I get output like this:[ 4.497662] ACPI Error: Non-zero value: 0xE5 (20170303/utresrc-484) [ 4.500111] ACPI Error: Non-zero value: 0xE5 (20170303/utresrc-484) [ 4.506862] ACPI Error: Non-zero value: 0xE5 (20170303/utresrc-484) [ 4.509011] ACPI Error: Non-zero value: 0xE5 (20170303/utresrc-484) [ 4.516777] ACPI Error: Non-zero value: 0x50 (20170303/utresrc-484) [ 4.519710] ACPI Error: Non-zero value: 0x50 (20170303/utresrc-484) [ 4.541214] ACPI Error: Non-zero value: 0xE4 (20170303/utresrc-484) [ 4.543670] ACPI Error: Non-zero value: 0xE4 (20170303/utresrc-484) [ 4.584594] ACPI Error: Non-zero value: 0x07 (20170303/utresrc-484) [ 4.586754] ACPI Error: Non-zero value: 0x11 (20170303/utresrc-484)By not returning an error, I no longer see the other errors and everything seems to work.
I haven't yet determined whether the non-zero value is a valid checksum but
it's definitely not zero.Quoted 5 lines
If the byte is technically defined to be a checksum, then the code ought to
accept a valid checksum. If it turns out that my platform isn't actually providing a valid checksum, then I'd like to see a warning or something rather than a error, since this change will break a lot of systems.
Quoted 4 lines
I talked to our FW team and we do generate checksums and not a zero for at least some
of the AML. Please revert this change until you can also validate a checksum. Or shall I post a patch to remove the check?
I'll skip this patch, no need to do anything else. Thanks for your report!
Bob, can you revert this upstream, please? It looks like the assumption it is based on doesn't hold.
Thanks,
Rafael
Re: [PATCH 01/15] ACPICA: Disassembler: Enhance resource descriptor detection
On 6/5/2017 4:42 PM, Rafael J. Wysocki wrote:
<snip>
Quoted 6 lines
Quoted 4 lines
I talked to our FW team and we do generate checksums and not a zero for at least some
of the AML. Please revert this change until you can also validate a checksum. Or shall I post a patch to remove the check?I'll skip this patch, no need to do anything else. Thanks for your report!
Thanks. This patch is already in as of 4.12rc1 and not part of the most recent ACPICA drop.
Quoted 2 lines
Bob, can you revert this upstream, please? It looks like the assumption it is based on doesn't hold.
Bob, I'm happy to test something if there is a new patch that looks for zero or a valid checksum. TBH, I'm not 100% certain that our checksums are correct because nothing has ever tried to verify them.
-- ljk
Quoted 4 lines
Thanks,
Rafael
Rafael J. Wysocki
maintainerRe: [PATCH 01/15] ACPICA: Disassembler: Enhance resource descriptor detection
Quoted 10 lines · Linda Knippers
On 6/5/2017 4:42 PM, Rafael J. Wysocki wrote:
<snip>Quoted 7 lines
Quoted 5 lines
I talked to our FW team and we do generate checksums and not a zero for at
least some
of the AML. Please revert this change until you can also validate a checksum. Or shall I post a patch to remove the check?
Quoted 7 lines
Quoted 2 lines
I'll skip this patch, no need to do anything else. Thanks for your report!
Thanks. This patch is already in as of 4.12rc1 and not part of the most recent
ACPICA drop.
Ah, OK.
I should have checked I guess. :-)
Anyway, I'll revert it, then.
Quoted 6 lines
Quoted 2 lines
Bob, can you revert this upstream, please? It looks like the assumption it is based on doesn't hold.
Bob, I'm happy to test something if there is a new patch that looks for zero or a valid checksum. TBH, I'm not 100% certain that our checksums are correct because nothing has ever tried to verify them.
Well, that's part of the problem here I guess. If they have never been tested, they cannot be trusted.
Still, the commit in question clearly assumed that value to always be 0 and it clearly is not the case here.
Thanks,
Rafael
Re: [PATCH 01/15] ACPICA: Disassembler: Enhance resource descriptor detection
Quoted 32 lines · Rafael J. Wysocki
Quoted 10 lines · Linda Knippers
On 6/5/2017 4:42 PM, Rafael J. Wysocki wrote:
<snip>Quoted 7 lines
Quoted 5 lines
I talked to our FW team and we do generate checksums and not a zero for at
least some
of the AML. Please revert this change until you can also validate a checksum. Or shall I post a patch to remove the check?Quoted 7 lines
Quoted 2 lines
I'll skip this patch, no need to do anything else. Thanks for your report!
Thanks. This patch is already in as of 4.12rc1 and not part of the most recent
ACPICA drop.Ah, OK.
I should have checked I guess. :-)
Anyway, I'll revert it, then.
Quoted 6 lines
Quoted 2 lines
Bob, can you revert this upstream, please? It looks like the assumption it is based on doesn't hold.
Bob, I'm happy to test something if there is a new patch that looks for zero or a valid checksum. TBH, I'm not 100% certain that our checksums are correct because nothing has ever tried to verify them.
Quoted 6 lines
Well, that's part of the problem here I guess. If they have never been tested, they cannot be trusted.
Still, the commit in question clearly assumed that value to always be 0 and it clearly is not the case here.
Just stumbled across this on the moonshot m400 and breaks the parsing of the PNP0A08 _CRS on that platform.
Graeme
Re: [PATCH 01/15] ACPICA: Disassembler: Enhance resource descriptor detection
In reply to Rafael J. WysockiQuoted 19 lines · Rafael J. Wysocki
Quoted 10 lines · Linda Knippers
On 6/5/2017 4:42 PM, Rafael J. Wysocki wrote:
<snip>Quoted 7 lines
Quoted 5 lines
I talked to our FW team and we do generate checksums and not a zero for at
least some
of the AML. Please revert this change until you can also validate a checksum. Or shall I post a patch to remove the check?Quoted 7 lines
Quoted 2 lines
I'll skip this patch, no need to do anything else. Thanks for your report!
Thanks. This patch is already in as of 4.12rc1 and not part of the most recent
ACPICA drop.
Quoted 5 lines
Ah, OK.
I should have checked I guess. :-)
Anyway, I'll revert it, then.
Hi Rafael, Is this still in the queue to be reverted?
I see it's still in rc5 but it really needs to go before 4.12 is released. We've been broken since rc1.
Thanks,
-- ljk
Quoted 17 lines
Quoted 7 lines
Quoted 3 lines
Bob, can you revert this upstream, please? It looks like the assumption it is based on doesn't hold.
Bob, I'm happy to test something if there is a new patch that looks for zero or a valid checksum. TBH, I'm not 100% certain that our checksums are correct because nothing has ever tried to verify them.
Well, that's part of the problem here I guess. If they have never been tested, they cannot be trusted.
Still, the commit in question clearly assumed that value to always be 0 and it clearly is not the case here.
Thanks,
Rafael
Rafael J. Wysocki
maintainerRe: [PATCH 01/15] ACPICA: Disassembler: Enhance resource descriptor detection
Quoted 28 lines · Linda Knippers
Quoted 25 lines · Rafael J. Wysocki
Quoted 20 lines · Linda Knippers
On 6/5/2017 4:42 PM, Rafael J. Wysocki wrote:
<snip>Quoted 10 lines
Quoted 5 lines
I talked to our FW team and we do generate checksums and not a zero for at
least some
of the AML. Please revert this change until you can also validate a checksum. Or shall I post a patch to remove the check?I'll skip this patch, no need to do anything else. Thanks for your report!
Thanks. This patch is already in as of 4.12rc1 and not part of the most recent
ACPICA drop.
Quoted 8 lines
Quoted 5 lines
Ah, OK.
I should have checked I guess. :-)
Anyway, I'll revert it, then.
Hi Rafael, Is this still in the queue to be reverted?
Yes, it is.
Quoted 2 lines
I see it's still in rc5 but it really needs to go before 4.12 is released. We've been broken since rc1.
I will push it for -rc6.
Thanks,
Rafael
RE: [PATCH 01/15] ACPICA: Disassembler: Enhance resource descriptor detection
In reply to Linda KnippersQuoted 41 lines
-----Original Message-----
From: Linda Knippers [mailto:[email protected]]
Sent: Tuesday, June 13, 2017 6:42 AM
To: Rafael J. Wysocki <[email protected]>
Cc: Moore, Robert <[email protected]>; Zheng, Lv <[email protected]>; Wysocki, Rafael J <[email protected]>; Rafael J . Wysocki <[email protected]>; Brown, Len <[email protected]>; Box, David E <[email protected]>; Lv Zheng <[email protected]>; ACPI Devel Maling List <[email protected]>
Subject: Re: [PATCH 01/15] ACPICA: Disassembler: Enhance resource descriptor detectionQuoted 1 line · Rafael J. Wysocki
On Mon, Jun 5, 2017 at 10:51 PM, Linda Knippers
Quoted 13 lines · <[email protected]> wrote:
Quoted 13 lines · Rafael J. Wysocki
<snip>
Quoted 8 lines
Quoted 4 lines
I talked to our FW team and we do generate checksums and not a zero for at least some of the AML. Please revert this change until you can also validate a checksum. Or shall I post a patch to remove the check?
I'll skip this patch, no need to do anything else. Thanks for your report!
Quoted 8 lines
Quoted 2 lines
Thanks. This patch is already in as of 4.12rc1 and not part of the most recent ACPICA drop.
Ah, OK.
I should have checked I guess. :-)
Anyway, I'll revert it, then.
Quoted 12 lines
Hi Rafael, Is this still in the queue to be reverted? I see it's still in rc5 but it really needs to go before 4.12 is released.
We've been broken since rc1.Thanks,
-- ljk
Quoted 4 lines
Quoted 4 lines
Quoted 3 lines
Bob, can you revert this upstream, please? It looks like the assumption it is based on doesn't hold.
[Moore, Robert]
It is on our list of things to look at, now that acpi 6.2 is released.
This has been a rather odd problem that we have been trying to fix for some time now; so we will of course need to come up with a permanent fix.
Quoted 13 lines
Quoted 13 lines
Quoted 3 lines
Bob, I'm happy to test something if there is a new patch that looks for zero or a valid checksum. TBH, I'm not 100% certain that our checksums are correct because nothing has ever tried to verify them.
Well, that's part of the problem here I guess. If they have never been tested, they cannot be trusted.
Still, the commit in question clearly assumed that value to always be 0 and it clearly is not the case here.
Thanks,
Rafael
PATCH 2/15 ACPICA: Update some function headers, no funtional change
In reply to Lv ZhengFrom: Bob Moore <[email protected]>
ACPICA commit 57c1b2d3e2f9ff7f465b0f08bfb38294101fe0b3
utxferror, update function headers.
--- drivers/acpi/acpica/utxferror.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-)
drivers/acpi/acpica/utxferror.c +6 -10
@@ -91,7 +91,7 @@ ACPI_EXPORT_SYMBOL(acpi_error)* * PARAMETERS: module_name - Caller's module name (for error output) * line_number - Caller's line number (for error output) -* status - Status to be formatted +* status - Status value to be decoded/formatted * format - Printf format string + additional args * * RETURN: None
@@ -132,8 +132,8 @@ ACPI_EXPORT_SYMBOL(acpi_exception)* * FUNCTION: acpi_warning * -* PARAMETERS: module_name - Caller's module name (for error output) -* line_number - Caller's line number (for error output) +* PARAMETERS: module_name - Caller's module name (for warning output) +* line_number - Caller's line number (for warning output) * format - Printf format string + additional args * * RETURN: None
@@ -163,17 +163,13 @@ ACPI_EXPORT_SYMBOL(acpi_warning)* * FUNCTION: acpi_info * -* PARAMETERS: module_name - Caller's module name (for error output) -* line_number - Caller's line number (for error output) -* format - Printf format string + additional args +* PARAMETERS: format - Printf format string + additional args * * RETURN: None * * DESCRIPTION: Print generic "ACPI:" information message. There is no * module/line/version info in order to keep the message simple. * -* TBD: module_name and line_number args are not needed, should be removed. -* ******************************************************************************/ void ACPI_INTERNAL_VAR_XFACE acpi_info(const char *format, ...) {
@@ -229,8 +225,8 @@ ACPI_EXPORT_SYMBOL(acpi_bios_error)* * FUNCTION: acpi_bios_warning * -* PARAMETERS: module_name - Caller's module name (for error output) -* line_number - Caller's line number (for error output) +* PARAMETERS: module_name - Caller's module name (for warning output) +* line_number - Caller's line number (for warning output) * format - Printf format string + additional args * * RETURN: None
Signature · 1 line
2.7.4
PATCH 3/15 ACPICA: Fix a module for excessive debug output
In reply to Lv ZhengFrom: Bob Moore <[email protected]>
ACPICA commit 5ecc479f62a57ab1e9d25ec3b0b84682fdf8a543
hwvalid.c - no trace needed for validate I/O function.
--- drivers/acpi/acpica/hwvalid.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
drivers/acpi/acpica/hwvalid.c +7 -7
@@ -102,7 +102,7 @@ static const struct acpi_port_info acpi_protected_ports[] = { {"PCI", 0x0CF8, 0x0CFF, ACPI_OSI_WIN_XP} }; -#define ACPI_PORT_INFO_ENTRIES ACPI_ARRAY_LENGTH (acpi_protected_ports) +#define ACPI_PORT_INFO_ENTRIES ACPI_ARRAY_LENGTH (acpi_protected_ports)/****************************************************************************** *
@@ -128,14 +128,14 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width)acpi_io_address last_address;const struct acpi_port_info *port_info; -ACPI_FUNCTION_TRACE (hw_validate_io_request); +ACPI_FUNCTION_NAME (hw_validate_io_request);/* Supported widths are 8/16/32 */ if ((bit_width !=8 ) && (bit_width !=16 ) && (bit_width !=32 )) {ACPI_ERROR ((AE_INFO ,"Bad BitWidth parameter: %8.8X" , bit_width)); -return (AE_BAD_PARAMETER ); +return_ACPI_STATUS (AE_BAD_PARAMETER ); } port_info = acpi_protected_ports;
@@ -167,7 +167,7 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width)for (i =0 ; i <ACPI_PORT_INFO_ENTRIES ; i++, port_info++) {/* * Check if the requested address range will write to a reserved -* port. Four cases to consider: +* port. There are four cases to consider: * * 1) Address range is contained completely in the port address range * 2) Address range overlaps port range at the port range start
@@ -206,7 +206,7 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width)* FUNCTION: acpi_hw_read_port * * PARAMETERS: Address Address of I/O port/register to read -* Value Where value is placed +* Value Where value (data) is returned * Width Number of bits * * RETURN: Status and value read from port
@@ -244,7 +244,7 @@ acpi_status acpi_hw_read_port(acpi_io_address address, u32 *value, u32 width)/* * There has been a protection violation within the request. Fall * back to byte granularity port I/O and ignore the failing bytes. -* This provides Windows compatibility. +* This provides compatibility with other ACPI implementations. */ for (i =0 , *value =0 ; i < width; i +=8 ) {
@@ -307,7 +307,7 @@ acpi_status acpi_hw_write_port(acpi_io_address address, u32 value, u32 width)/* * There has been a protection violation within the request. Fall * back to byte granularity port I/O and ignore the failing bytes. -* This provides Windows compatibility. +* This provides compatibility with other ACPI implementations. */ for (i =0 ; i < width; i +=8 ) {
Signature · 1 line
2.7.4
PATCH 4/15 ACPICA: Fix several incorrect invocations of ACPICA return macro
In reply to Lv ZhengFrom: Bob Moore <[email protected]>
ACPICA commit 521bedc49b42e59116de1b54dcd95d30d36cac90
Not needed since there is no function tracing for the validation function in hwvalid.c
--- drivers/acpi/acpica/hwvalid.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-)
drivers/acpi/acpica/hwvalid.c +4 -4
@@ -135,7 +135,7 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width)if ((bit_width !=8 ) && (bit_width !=16 ) && (bit_width !=32 )) {ACPI_ERROR ((AE_INFO ,"Bad BitWidth parameter: %8.8X" , bit_width)); -return_ACPI_STATUS (AE_BAD_PARAMETER ); +return (AE_BAD_PARAMETER ); } port_info = acpi_protected_ports;
@@ -153,13 +153,13 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width)ACPI_ERROR ((AE_INFO ,"Illegal I/O port address/length above 64K: %8.8X%8.8X/0x%X" ,ACPI_FORMAT_UINT64 (address), byte_width)); -return_ACPI_STATUS (AE_LIMIT ); +return (AE_LIMIT ); }/* Exit if requested address is not within the protected port table */ if (address > acpi_protected_ports[ACPI_PORT_INFO_ENTRIES -1 ].end) { -return_ACPI_STATUS (AE_OK ); +return (AE_OK ); }/* Check request against the list of protected I/O ports */
@@ -198,7 +198,7 @@ acpi_hw_validate_io_request(acpi_io_address address, u32 bit_width) } } -return_ACPI_STATUS (AE_OK ); +return (AE_OK ); }/******************************************************************************
Signature · 1 line
2.7.4
PATCH 5/15 ACPICA: Namespace: fix operand cache leak
In reply to Lv ZhengFrom: Seunghun Han <[email protected]>
ACPICA commit a23325b2e583556eae88ed3f764e457786bf4df6
I found some ACPI operand cache leaks in ACPI early abort cases.
Boot log of ACPI operand cache leak is as follows:
Quoted 6 lines
[ 0.174332] ACPI: Added _OSI(Module Device) [ 0.175504] ACPI: Added _OSI(Processor Device) [ 0.176010] ACPI: Added _OSI(3.0 _SCP Extensions) [ 0.177032] ACPI: Added _OSI(Processor Aggregator Device) [ 0.178284] ACPI: SCI (IRQ16705) allocation failed [ 0.179352] ACPI Exception: AE_NOT_ACQUIRED, Unable to install
System Control Interrupt handler (20160930/evevent-131)
Quoted 2 lines
[ 0.180008] ACPI: Unable to start the ACPI Interpreter [ 0.181125] ACPI Error: Could not remove SCI handler
(20160930/evmisc-281)
Quoted 1 line
[ 0.184068] kmem_cache_destroy Acpi-Operand: Slab cache still has
objects
Quoted 2 lines
[ 0.185358] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.10.0-rc3 #2 [ 0.186820] Hardware name: innotek gmb_h virtual_box/virtual_box, BIOS
virtual_box 12/01/2006
Quoted 7 lines
[ 0.188000] Call Trace: [ 0.188000] ? dump_stack+0x5c/0x7d [ 0.188000] ? kmem_cache_destroy+0x224/0x230 [ 0.188000] ? acpi_sleep_proc_init+0x22/0x22 [ 0.188000] ? acpi_os_delete_cache+0xa/0xd [ 0.188000] ? acpi_ut_delete_caches+0x3f/0x7b [ 0.188000] ? acpi_terminate+0x5/0xf
Quoted 8 lines
[ 0.188000] ? acpi_init+0x288/0x32e [ 0.188000] ? __class_create+0x4c/0x80 [ 0.188000] ? video_setup+0x7a/0x7a [ 0.188000] ? do_one_initcall+0x4e/0x1b0 [ 0.188000] ? kernel_init_freeable+0x194/0x21a [ 0.188000] ? rest_init+0x80/0x80 [ 0.188000] ? kernel_init+0xa/0x100 [ 0.188000] ? ret_from_fork+0x25/0x30
When early abort is occurred due to invalid ACPI information, Linux kernel terminates ACPI by calling acpi_terminate() function. The function calls acpi_ns_terminate() function to delete namespace data and ACPI operand cache (acpi_gbl_module_code_list).
But the deletion code in acpi_ns_terminate() function is wrapped in ACPI_EXEC_APP definition, therefore the code is only executed when the definition exists. If the define doesn't exist, ACPI operand cache (acpi_gbl_module_code_list) is leaked, and stack dump is shown in kernel log.
This causes a security threat because the old kernel (<= 4.9) shows memory locations of kernel functions in stack dump, therefore kernel ASLR can be neutralized.
To fix ACPI operand leak for enhancing security, I made a patch which removes the ACPI_EXEC_APP define in acpi_ns_terminate() function for executing the deletion code unconditionally.
--- drivers/acpi/acpica/nsutils.c | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-)
drivers/acpi/acpica/nsutils.c +9 -14
@@ -594,25 +594,20 @@ struct acpi_namespace_node *acpi_ns_validate_handle(acpi_handle handle)void acpi_ns_terminate (void ) {acpi_status status; +union acpi_operand_object *prev; +union acpi_operand_object *next;ACPI_FUNCTION_TRACE (ns_terminate); -#ifdef ACPI_EXEC_APP - { -union acpi_operand_object *prev; -union acpi_operand_object *next; +/* Delete any module-level code blocks */ -/* Delete any module-level code blocks */ - - next = acpi_gbl_module_code_list; -while (next) { - prev = next; - next = next->method.mutex; - prev->method.mutex =NULL ;/* Clear the Mutex (cheated) field */ -acpi_ut_remove_reference (prev); - } + next = acpi_gbl_module_code_list; +while (next) { + prev = next; + next = next->method.mutex; + prev->method.mutex =NULL ;/* Clear the Mutex (cheated) field */ +acpi_ut_remove_reference (prev); } -#endif /* * Free the entire namespace -- all nodes and all objects
Signature · 1 line
2.7.4
PATCH 6/15 ACPICA: Update for automatic repair code for objects returned by evaluate_object
In reply to Lv ZhengFrom: Bob Moore <[email protected]>
ACPICA commit 6b58810b9aad7358fbf1a0f4057fefa8d29838d3
This change fixes two instances where the repair code made an incorrect assumption about how reference counts are assigned to package objects. Resolves issues where a warning was issued about a "large reference count" -- which usually indicates an attempt to delete an object that has previously been poisoned and released into the object cache.
--- drivers/acpi/acpica/nsrepair.c | 16 +++------------- drivers/acpi/acpica/nsrepair2.c | 6 +----- 2 files changed, 4 insertions(+), 18 deletions(-)
drivers/acpi/acpica/nsrepair.c +3 -13
@@ -290,22 +290,12 @@ acpi_ns_simple_repair(struct acpi_evaluate_info *info,/* Object was successfully repaired */ if (package_index !=ACPI_NOT_PACKAGE_ELEMENT ) { -/* -* The original object is a package element. We need to -* decrement the reference count of the original object, -* for removing it from the package. -* -* However, if the original object was just wrapped with a -* package object as part of the repair, we don't need to -* change the reference count. -*/ + +/* Update reference count of new object */ +if (!(info->return_flags &ACPI_OBJECT_WRAPPED )) { new_object->common.reference_count = return_object->common.reference_count; - -if (return_object->common.reference_count >1 ) { - return_object->common.reference_count--; - } } ACPI_DEBUG_PRINT((ACPI_DB_REPAIR,
drivers/acpi/acpica/nsrepair2.c +1 -5
@@ -403,16 +403,12 @@ acpi_ns_repair_CID(struct acpi_evaluate_info *info,return (status); } -/* Take care with reference counts */ -if (original_element != *element_ptr) { -/* Element was replaced */ +/* Update reference count of new object */ (*element_ptr)->common.reference_count = original_ref_count; - -acpi_ut_remove_reference (original_element); } element_ptr++;
Signature · 1 line
2.7.4
PATCH 7/15 ACPICA: debugger: fix memory leak on Pathname
In reply to Lv ZhengFrom: Colin Ian King <[email protected]>
ACPICA commit 1db14dc88f308119634d77ab9dcb6586b9fe4777
On the error return path when acpi_get_object_info fails the allocated pathname is not free'd leading to a memory leak. Free pathname to fix this.
--- drivers/acpi/acpica/dbmethod.c | 1 + 1 file changed, 1 insertion(+)
drivers/acpi/acpica/dbmethod.c +1 -0
@@ -422,6 +422,7 @@ acpi_db_walk_for_execute(acpi_handle obj_handle, status =acpi_get_object_info (obj_handle, &obj_info);if (ACPI_FAILURE (status)) { +ACPI_FREE (pathname);return (status); }
Signature · 1 line
2.7.4
PATCH 8/15 ACPICA: Debugger: Add interpreter blocking mark for single-step mode
In reply to Lv ZhengACPICA commit 91af5d18cd40b35f9d5568fb95fc403ff12474e5
When the single-step mode is used, evaluation is actually split by the single-step command prompts, so this patch correctly marks the evaluation segment with interpreter lock release/acquire.
This in return fixes an issue that in the single-step command prompt, commands requiring to hold the namespace lock (ex. namespace) cannot be executed. ACPICA BZ 1362, fixed by Lv Zheng.
--- drivers/acpi/acpica/dbxface.c | 3 +++ 1 file changed, 3 insertions(+)
drivers/acpi/acpica/dbxface.c +3 -0
@@ -45,6 +45,7 @@#include "accommon.h" #include "amlcode.h" #include "acdebug.h" +#include "acinterp.h" #define _COMPONENT ACPI_CA_DEBUGGERACPI_MODULE_NAME ("dbxface" )
@@ -368,7 +369,9 @@ acpi_db_single_step(struct acpi_walk_state *walk_state, walk_state->method_breakpoint =1 ;/* Must be non-zero! */ } +acpi_ex_exit_interpreter (); status =acpi_db_start_command (walk_state, op); +acpi_ex_enter_interpreter ();/* User commands complete, continue execution of the interrupted method */
Signature · 1 line
2.7.4
PATCH 9/15 ACPICA: Cleanup AML opcode definitions, no functional change
In reply to Lv ZhengFrom: Bob Moore <[email protected]>
ACPICA commit ec969d38fef3be95358e65f0dd071b5f2c045b6b
This change is a cleanup and further standardization of the AML opcode defines in amlcode.h
Improves the readability and maintainability of the source code.
--- drivers/acpi/acpica/amlcode.h | 97 ++++++++++++++++++----------------------- drivers/acpi/acpica/dbxface.c | 2 +- drivers/acpi/acpica/dscontrol.c | 2 +- drivers/acpi/acpica/dsmthdat.c | 3 +- drivers/acpi/acpica/dsobject.c | 15 ++++--- drivers/acpi/acpica/dsopcode.c | 4 +- drivers/acpi/acpica/dsutils.c | 8 ++-- drivers/acpi/acpica/dswexec.c | 2 +- drivers/acpi/acpica/dswload2.c | 2 +- drivers/acpi/acpica/exmisc.c | 16 +++---- drivers/acpi/acpica/exnames.c | 4 +- drivers/acpi/acpica/exoparg1.c | 17 ++++---- drivers/acpi/acpica/exoparg2.c | 4 +- drivers/acpi/acpica/exoparg6.c | 16 +++---- drivers/acpi/acpica/exresolv.c | 3 +- drivers/acpi/acpica/exstore.c | 5 ++- drivers/acpi/acpica/exstoren.c | 2 +- drivers/acpi/acpica/nsaccess.c | 2 +- drivers/acpi/acpica/nsutils.c | 6 +-- drivers/acpi/acpica/psargs.c | 6 +-- drivers/acpi/acpica/psloop.c | 2 +- drivers/acpi/acpica/psopcode.c | 10 ++--- drivers/acpi/acpica/psparse.c | 6 +-- drivers/acpi/acpica/pstree.c | 2 +- 24 files changed, 114 insertions(+), 122 deletions(-)
drivers/acpi/acpica/amlcode.h +43 -54
@@ -48,11 +48,8 @@/* primary opcodes */ -#define AML_NULL_CHAR (u16) 0x00 -#define AML_ZERO_OP (u16) 0x00#define AML_ONE_OP (u16) 0x01 -#define AML_UNASSIGNED (u16) 0x02#define AML_ALIAS_OP (u16) 0x06#define AML_NAME_OP (u16) 0x08#define AML_BYTE_OP (u16) 0x0a
@@ -63,17 +60,15 @@#define AML_SCOPE_OP (u16) 0x10#define AML_BUFFER_OP (u16) 0x11#define AML_PACKAGE_OP (u16) 0x12 -#define AML_VAR_PACKAGE_OP (u16) 0x13/* ACPI 2.0 */ +#define AML_VARIABLE_PACKAGE_OP (u16) 0x13/* ACPI 2.0 */ #define AML_METHOD_OP (u16) 0x14#define AML_EXTERNAL_OP (u16) 0x15/* ACPI 6.0 */ #define AML_DUAL_NAME_PREFIX (u16) 0x2e -#define AML_MULTI_NAME_PREFIX_OP (u16) 0x2f -#define AML_NAME_CHAR_SUBSEQ (u16) 0x30 -#define AML_NAME_CHAR_FIRST (u16) 0x41 -#define AML_EXTENDED_OP_PREFIX (u16) 0x5b +#define AML_MULTI_NAME_PREFIX (u16) 0x2f +#define AML_EXTENDED_PREFIX (u16) 0x5b#define AML_ROOT_PREFIX (u16) 0x5c#define AML_PARENT_PREFIX (u16) 0x5e -#define AML_LOCAL_OP (u16) 0x60 +#define AML_FIRST_LOCAL_OP (u16) 0x60/* Used for Local op # calculations */ #define AML_LOCAL0 (u16) 0x60#define AML_LOCAL1 (u16) 0x61#define AML_LOCAL2 (u16) 0x62
@@ -82,7 +77,7 @@#define AML_LOCAL5 (u16) 0x65#define AML_LOCAL6 (u16) 0x66#define AML_LOCAL7 (u16) 0x67 -#define AML_ARG_OP (u16) 0x68 +#define AML_FIRST_ARG_OP (u16) 0x68/* Used for Arg op # calculations */ #define AML_ARG0 (u16) 0x68#define AML_ARG1 (u16) 0x69#define AML_ARG2 (u16) 0x6a
@@ -93,7 +88,7 @@#define AML_STORE_OP (u16) 0x70#define AML_REF_OF_OP (u16) 0x71#define AML_ADD_OP (u16) 0x72 -#define AML_CONCAT_OP (u16) 0x73 +#define AML_CONCATENATE_OP (u16) 0x73#define AML_SUBTRACT_OP (u16) 0x74#define AML_INCREMENT_OP (u16) 0x75#define AML_DECREMENT_OP (u16) 0x76
@@ -110,7 +105,7 @@#define AML_FIND_SET_LEFT_BIT_OP (u16) 0x81#define AML_FIND_SET_RIGHT_BIT_OP (u16) 0x82#define AML_DEREF_OF_OP (u16) 0x83 -#define AML_CONCAT_RES_OP (u16) 0x84/* ACPI 2.0 */ +#define AML_CONCATENATE_TEMPLATE_OP (u16) 0x84/* ACPI 2.0 */ #define AML_MOD_OP (u16) 0x85/* ACPI 2.0 */ #define AML_NOTIFY_OP (u16) 0x86#define AML_SIZE_OF_OP (u16) 0x87
@@ -122,18 +117,18 @@#define AML_CREATE_BIT_FIELD_OP (u16) 0x8d#define AML_OBJECT_TYPE_OP (u16) 0x8e#define AML_CREATE_QWORD_FIELD_OP (u16) 0x8f/* ACPI 2.0 */ -#define AML_LAND_OP (u16) 0x90 -#define AML_LOR_OP (u16) 0x91 -#define AML_LNOT_OP (u16) 0x92 -#define AML_LEQUAL_OP (u16) 0x93 -#define AML_LGREATER_OP (u16) 0x94 -#define AML_LLESS_OP (u16) 0x95 +#define AML_LOGICAL_AND_OP (u16) 0x90 +#define AML_LOGICAL_OR_OP (u16) 0x91 +#define AML_LOGICAL_NOT_OP (u16) 0x92 +#define AML_LOGICAL_EQUAL_OP (u16) 0x93 +#define AML_LOGICAL_GREATER_OP (u16) 0x94 +#define AML_LOGICAL_LESS_OP (u16) 0x95#define AML_TO_BUFFER_OP (u16) 0x96/* ACPI 2.0 */ -#define AML_TO_DECSTRING_OP (u16) 0x97/* ACPI 2.0 */ -#define AML_TO_HEXSTRING_OP (u16) 0x98/* ACPI 2.0 */ +#define AML_TO_DECIMAL_STRING_OP (u16) 0x97/* ACPI 2.0 */ +#define AML_TO_HEX_STRING_OP (u16) 0x98/* ACPI 2.0 */ #define AML_TO_INTEGER_OP (u16) 0x99/* ACPI 2.0 */ #define AML_TO_STRING_OP (u16) 0x9c/* ACPI 2.0 */ -#define AML_COPY_OP (u16) 0x9d/* ACPI 2.0 */ +#define AML_COPY_OBJECT_OP (u16) 0x9d/* ACPI 2.0 */ #define AML_MID_OP (u16) 0x9e/* ACPI 2.0 */ #define AML_CONTINUE_OP (u16) 0x9f/* ACPI 2.0 */ #define AML_IF_OP (u16) 0xa0
@@ -142,18 +137,26 @@#define AML_NOOP_OP (u16) 0xa3#define AML_RETURN_OP (u16) 0xa4#define AML_BREAK_OP (u16) 0xa5 -#define AML_BREAK_POINT_OP (u16) 0xcc +#define AML_BREAKPOINT_OP (u16) 0xcc#define AML_ONES_OP (u16) 0xff -/* prefixed opcodes */ +/* +* Combination opcodes (actually two one-byte opcodes) +* Used by the disassembler and iASL compiler +*/ +#define AML_LOGICAL_GREATER_EQUAL_OP (u16) 0x9295/* LNot (LLess) */ +#define AML_LOGICAL_LESS_EQUAL_OP (u16) 0x9294/* LNot (LGreater) */ +#define AML_LOGICAL_NOT_EQUAL_OP (u16) 0x9293/* LNot (LEqual) */ + +/* Prefixed (2-byte) opcodes (with AML_EXTENDED_PREFIX) */ -#define AML_EXTENDED_OPCODE (u16) 0x5b00/* prefix for 2-byte opcodes */ +#define AML_EXTENDED_OPCODE (u16) 0x5b00/* Prefix for 2-byte opcodes */ #define AML_MUTEX_OP (u16) 0x5b01#define AML_EVENT_OP (u16) 0x5b02 -#define AML_SHIFT_RIGHT_BIT_OP (u16) 0x5b10 -#define AML_SHIFT_LEFT_BIT_OP (u16) 0x5b11 -#define AML_COND_REF_OF_OP (u16) 0x5b12 +#define AML_SHIFT_RIGHT_BIT_OP (u16) 0x5b10/* Obsolete, not in ACPI spec */ +#define AML_SHIFT_LEFT_BIT_OP (u16) 0x5b11/* Obsolete, not in ACPI spec */ +#define AML_CONDITIONAL_REF_OF_OP (u16) 0x5b12#define AML_CREATE_FIELD_OP (u16) 0x5b13#define AML_LOAD_TABLE_OP (u16) 0x5b1f/* ACPI 2.0 */ #define AML_LOAD_OP (u16) 0x5b20
@@ -175,21 +178,13 @@#define AML_FIELD_OP (u16) 0x5b81#define AML_DEVICE_OP (u16) 0x5b82#define AML_PROCESSOR_OP (u16) 0x5b83 -#define AML_POWER_RES_OP (u16) 0x5b84 +#define AML_POWER_RESOURCE_OP (u16) 0x5b84#define AML_THERMAL_ZONE_OP (u16) 0x5b85#define AML_INDEX_FIELD_OP (u16) 0x5b86#define AML_BANK_FIELD_OP (u16) 0x5b87#define AML_DATA_REGION_OP (u16) 0x5b88/* ACPI 2.0 */ /* -* Combination opcodes (actually two one-byte opcodes) -* Used by the disassembler and iASL compiler -*/ -#define AML_LGREATEREQUAL_OP (u16) 0x9295 -#define AML_LLESSEQUAL_OP (u16) 0x9294 -#define AML_LNOTEQUAL_OP (u16) 0x9293 - -/* * Opcodes for "Field" operators */ #define AML_FIELD_OFFSET_OP (u8) 0x00
@@ -308,24 +303,19 @@#define ARGI_INVALID_OPCODE 0xFFFFFFFF/* -* hash offsets -*/ -#define AML_EXTOP_HASH_OFFSET 22 -#define AML_LNOT_HASH_OFFSET 19 - -/* -* opcode groups and types +* Some of the flags and types below are of the form: +* +* AML_FLAGS_EXEC_#A_#T,#R, or +* AML_TYPE_EXEC_#A_#T,#R where: +* +* #A is the number of required arguments +* #T is the number of target operands +* #R indicates whether there is a return value */ -#define OPGRP_NAMED 0x01 -#define OPGRP_FIELD 0x02 -#define OPGRP_BYTELIST 0x04/* -* Opcode information +* Opcode information flags */ - -/* Opcode flags */ -#define AML_LOGICAL 0x0001#define AML_LOGICAL_NUMERIC 0x0002#define AML_MATH 0x0004
@@ -342,7 +332,7 @@#define AML_CONSTANT 0x2000#define AML_NO_OPERAND_RESOLVE 0x4000 -/* Convenient flag groupings */ +/* Convenient flag groupings of the flags above */ #define AML_FLAGS_EXEC_0A_0T_1R AML_HAS_RETVAL#define AML_FLAGS_EXEC_1A_0T_0R AML_HAS_ARGS/* Monadic1 */
@@ -359,7 +349,7 @@/* * The opcode Type is used in a dispatch table, do not change -* without updating the table. +* or add anything new without updating the table. */ #define AML_TYPE_EXEC_0A_0T_1R 0x00#define AML_TYPE_EXEC_1A_0T_0R 0x01/* Monadic1 */
@@ -385,7 +375,7 @@#define AML_TYPE_METHOD_CALL 0x10 -/* Misc */ +/* Miscellaneous types */ #define AML_TYPE_CREATE_FIELD 0x11#define AML_TYPE_CREATE_OBJECT 0x12
@@ -395,7 +385,6 @@#define AML_TYPE_NAMED_SIMPLE 0x16#define AML_TYPE_NAMED_COMPLEX 0x17#define AML_TYPE_RETURN 0x18 -#define AML_TYPE_UNDEFINED 0x19#define AML_TYPE_BOGUS 0x1A
drivers/acpi/acpica/dbxface.c +1 -1
@@ -126,7 +126,7 @@ acpi_db_start_command(struct acpi_walk_state *walk_state,* * RETURN: Status * -* DESCRIPTION: Called for AML_BREAK_POINT_OP +* DESCRIPTION: Called for AML_BREAKPOINT_OP * ******************************************************************************/
drivers/acpi/acpica/dscontrol.c +1 -1
@@ -347,7 +347,7 @@ acpi_ds_exec_end_control_op(struct acpi_walk_state *walk_state,break ; -case AML_BREAK_POINT_OP : +case AML_BREAKPOINT_OP :acpi_db_signal_break_point (walk_state);
drivers/acpi/acpica/dsmthdat.c +2 -1
@@ -672,7 +672,8 @@ acpi_ds_store_object_to_local(u8 type,* * FUNCTION: acpi_ds_method_data_get_type * -* PARAMETERS: opcode - Either AML_LOCAL_OP or AML_ARG_OP +* PARAMETERS: opcode - Either AML_FIRST LOCAL_OP or +* AML_FIRST_ARG_OP * index - Which Local or Arg whose type to get * walk_state - Current walk state object *
drivers/acpi/acpica/dsobject.c +8 -7
@@ -114,7 +114,7 @@ acpi_ds_build_internal_object(struct acpi_walk_state *walk_state, ((op->common.parent->common.aml_opcode ==AML_PACKAGE_OP ) || (op->common.parent->common.aml_opcode == - AML_VAR_PACKAGE_OP))) { + AML_VARIABLE_PACKAGE_OP))) {/* * We didn't find the target and we are populating elements * of a package - ignore if slack enabled. Some ASL code
@@ -144,7 +144,7 @@ acpi_ds_build_internal_object(struct acpi_walk_state *walk_state,if ((op->common.parent->common.aml_opcode ==AML_PACKAGE_OP ) || (op->common.parent->common.aml_opcode == -AML_VAR_PACKAGE_OP )) { +AML_VARIABLE_PACKAGE_OP )) {/* * Attempt to resolve the node to a value before we insert it into * the package. If this is a reference to a common data type,
@@ -398,7 +398,7 @@ acpi_ds_build_internal_package_obj(struct acpi_walk_state *walk_state, parent = op->common.parent;while ((parent->common.aml_opcode ==AML_PACKAGE_OP ) || - (parent->common.aml_opcode ==AML_VAR_PACKAGE_OP )) { + (parent->common.aml_opcode ==AML_VARIABLE_PACKAGE_OP )) { parent = parent->common.parent; }
@@ -769,10 +769,10 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,switch (op_info->type) {case AML_TYPE_LOCAL_VARIABLE : -/* Local ID (0-7) is (AML opcode - base AML_LOCAL_OP) */ +/* Local ID (0-7) is (AML opcode - base AML_FIRST_LOCAL_OP) */ obj_desc->reference.value = - ((u32 )opcode) -AML_LOCAL_OP ; + ((u32 )opcode) -AML_FIRST_LOCAL_OP ; obj_desc->reference.class =ACPI_REFCLASS_LOCAL ;#ifndef ACPI_NO_METHOD_EXECUTION
@@ -790,9 +790,10 @@ acpi_ds_init_object_from_op(struct acpi_walk_state *walk_state,case AML_TYPE_METHOD_ARGUMENT : -/* Arg ID (0-6) is (AML opcode - base AML_ARG_OP) */ +/* Arg ID (0-6) is (AML opcode - base AML_FIRST_ARG_OP) */ - obj_desc->reference.value = ((u32 )opcode) -AML_ARG_OP ; + obj_desc->reference.value = + ((u32 )opcode) -AML_FIRST_ARG_OP ; obj_desc->reference.class =ACPI_REFCLASS_ARG ;#ifndef ACPI_NO_METHOD_EXECUTION
drivers/acpi/acpica/dsopcode.c +2 -2
@@ -639,7 +639,7 @@ acpi_ds_eval_data_object_operands(struct acpi_walk_state *walk_state,break ;case AML_PACKAGE_OP : -case AML_VAR_PACKAGE_OP : +case AML_VARIABLE_PACKAGE_OP : status = acpi_ds_build_internal_package_obj(walk_state, op, length,
@@ -660,7 +660,7 @@ acpi_ds_eval_data_object_operands(struct acpi_walk_state *walk_state,if ((!op->common.parent) || ((op->common.parent->common.aml_opcode !=AML_PACKAGE_OP ) && (op->common.parent->common.aml_opcode != -AML_VAR_PACKAGE_OP ) +AML_VARIABLE_PACKAGE_OP ) && (op->common.parent->common.aml_opcode !=AML_NAME_OP ))) { walk_state->result_obj = obj_desc;
drivers/acpi/acpica/dsutils.c +4 -4
@@ -275,10 +275,10 @@ acpi_ds_is_result_used(union acpi_parse_object * op,if ((op->common.parent->common.aml_opcode ==AML_REGION_OP ) || (op->common.parent->common.aml_opcode ==AML_DATA_REGION_OP ) || (op->common.parent->common.aml_opcode ==AML_PACKAGE_OP ) - || (op->common.parent->common.aml_opcode == -AML_VAR_PACKAGE_OP ) || (op->common.parent->common.aml_opcode ==AML_BUFFER_OP ) || (op->common.parent->common.aml_opcode == +AML_VARIABLE_PACKAGE_OP ) + || (op->common.parent->common.aml_opcode ==AML_INT_EVAL_SUBTREE_OP ) || (op->common.parent->common.aml_opcode ==AML_BANK_FIELD_OP )) {
@@ -551,7 +551,7 @@ acpi_ds_create_operand(struct acpi_walk_state *walk_state,*/ if (status ==AE_NOT_FOUND ) {if (parent_op->common.aml_opcode == -AML_COND_REF_OF_OP ) { +AML_CONDITIONAL_REF_OF_OP ) {/* * For the Conditional Reference op, it's OK if * the name is not found; We just need a way to
@@ -806,7 +806,7 @@ acpi_status acpi_ds_evaluate_name_path(struct acpi_walk_state *walk_state) }if ((op->common.parent->common.aml_opcode ==AML_PACKAGE_OP ) || - (op->common.parent->common.aml_opcode ==AML_VAR_PACKAGE_OP ) || + (op->common.parent->common.aml_opcode ==AML_VARIABLE_PACKAGE_OP ) || (op->common.parent->common.aml_opcode ==AML_REF_OF_OP )) {/* TBD: Should we specify this feature as a bit of op_info->Flags of these opcodes? */
drivers/acpi/acpica/dswexec.c +1 -1
@@ -497,7 +497,7 @@ acpi_status acpi_ds_exec_end_op(struct acpi_walk_state *walk_state)if ((op->asl.parent) && ((op->asl.parent->asl.aml_opcode ==AML_PACKAGE_OP ) || (op->asl.parent->asl.aml_opcode == -AML_VAR_PACKAGE_OP ))) { +AML_VARIABLE_PACKAGE_OP ))) {ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH ,"Method Reference in a Package, Op=%p\n" , op));
drivers/acpi/acpica/dswload2.c +1 -1
@@ -528,7 +528,7 @@ acpi_status acpi_ds_load2_end_op(struct acpi_walk_state *walk_state) status =acpi_ex_create_processor (walk_state);break ; -case AML_POWER_RES_OP : +case AML_POWER_RESOURCE_OP : status =acpi_ex_create_power_resource (walk_state);break ;
drivers/acpi/acpica/exmisc.c +8 -8
@@ -249,14 +249,14 @@ acpi_ex_do_logical_numeric_op(u16 opcode,ACPI_FUNCTION_TRACE (ex_do_logical_numeric_op);switch (opcode) { -case AML_LAND_OP :/* LAnd (Integer0, Integer1) */ +case AML_LOGICAL_AND_OP :/* LAnd (Integer0, Integer1) */ if (integer0 && integer1) { local_result = TRUE; }break ; -case AML_LOR_OP :/* LOr (Integer0, Integer1) */ +case AML_LOGICAL_OR_OP :/* LOr (Integer0, Integer1) */ if (integer0 || integer1) { local_result = TRUE;
@@ -365,21 +365,21 @@ acpi_ex_do_logical_op(u16 opcode, integer1 = local_operand1->integer.value;switch (opcode) { -case AML_LEQUAL_OP :/* LEqual (Operand0, Operand1) */ +case AML_LOGICAL_EQUAL_OP :/* LEqual (Operand0, Operand1) */ if (integer0 == integer1) { local_result = TRUE; }break ; -case AML_LGREATER_OP :/* LGreater (Operand0, Operand1) */ +case AML_LOGICAL_GREATER_OP :/* LGreater (Operand0, Operand1) */ if (integer0 > integer1) { local_result = TRUE; }break ; -case AML_LLESS_OP :/* LLess (Operand0, Operand1) */ +case AML_LOGICAL_LESS_OP :/* LLess (Operand0, Operand1) */ if (integer0 < integer1) { local_result = TRUE;
@@ -408,7 +408,7 @@ acpi_ex_do_logical_op(u16 opcode, (length0 > length1) ? length1 : length0);switch (opcode) { -case AML_LEQUAL_OP :/* LEqual (Operand0, Operand1) */ +case AML_LOGICAL_EQUAL_OP :/* LEqual (Operand0, Operand1) */ /* Length and all bytes must be equal */
@@ -420,7 +420,7 @@ acpi_ex_do_logical_op(u16 opcode, }break ; -case AML_LGREATER_OP :/* LGreater (Operand0, Operand1) */ +case AML_LOGICAL_GREATER_OP :/* LGreater (Operand0, Operand1) */ if (compare >0 ) { local_result = TRUE;
@@ -437,7 +437,7 @@ acpi_ex_do_logical_op(u16 opcode, }break ; -case AML_LLESS_OP :/* LLess (Operand0, Operand1) */ +case AML_LOGICAL_LESS_OP :/* LLess (Operand0, Operand1) */ if (compare >0 ) { goto cleanup;/* FALSE */
drivers/acpi/acpica/exnames.c +2 -2
@@ -122,7 +122,7 @@ static char *acpi_ex_allocate_name_string(u32 prefix_count, u32 num_name_segs)/* Set up multi prefixes */ - *temp_ptr++ =AML_MULTI_NAME_PREFIX_OP ; + *temp_ptr++ =AML_MULTI_NAME_PREFIX ; *temp_ptr++ = (char )num_name_segs; }else if (2 == num_name_segs) {
@@ -342,7 +342,7 @@ acpi_ex_get_name_string(acpi_object_type data_type, }break ; -case AML_MULTI_NAME_PREFIX_OP : +case AML_MULTI_NAME_PREFIX : ACPI_DEBUG_PRINT((ACPI_DB_LOAD, "MultiNamePrefix at %p\n",
drivers/acpi/acpica/exoparg1.c +8 -9
@@ -274,7 +274,7 @@ acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state)case AML_FIND_SET_RIGHT_BIT_OP :case AML_FROM_BCD_OP :case AML_TO_BCD_OP : -case AML_COND_REF_OF_OP : +case AML_CONDITIONAL_REF_OF_OP :/* Create a return object of type Integer for these opcodes */
@@ -405,7 +405,7 @@ acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state) }break ; -case AML_COND_REF_OF_OP :/* cond_ref_of (source_object, Result) */ +case AML_CONDITIONAL_REF_OF_OP :/* cond_ref_of (source_object, Result) */ /* * This op is a little strange because the internal return value is * different than the return value stored in the result descriptor
@@ -475,14 +475,14 @@ acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state)/* * ACPI 2.0 Opcodes */ -case AML_COPY_OP :/* Copy (Source, Target) */ +case AML_COPY_OBJECT_OP :/* copy_object (Source, Target) */ status =acpi_ut_copy_iobject_to_iobject (operand[0 ], &return_desc, walk_state);break ; -case AML_TO_DECSTRING_OP :/* to_decimal_string (Data, Result) */ +case AML_TO_DECIMAL_STRING_OP :/* to_decimal_string (Data, Result) */ status = acpi_ex_convert_to_string(operand[0], &return_desc,
@@ -495,7 +495,7 @@ acpi_status acpi_ex_opcode_1A_1T_1R(struct acpi_walk_state *walk_state) }break ; -case AML_TO_HEXSTRING_OP :/* to_hex_string (Data, Result) */ +case AML_TO_HEX_STRING_OP :/* to_hex_string (Data, Result) */ status = acpi_ex_convert_to_string(operand[0], &return_desc,
@@ -603,7 +603,7 @@ acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state)/* Examine the AML opcode */ switch (walk_state->opcode) { -case AML_LNOT_OP :/* LNot (Operand) */ +case AML_LOGICAL_NOT_OP :/* LNot (Operand) */ return_desc =acpi_ut_create_integer_object ((u64 )0 );if (!return_desc) {
@@ -652,9 +652,8 @@ acpi_status acpi_ex_opcode_1A_0T_1R(struct acpi_walk_state *walk_state)* NOTE: We use LNOT_OP here in order to force resolution of the * reference operand to an actual integer. */ - status = -acpi_ex_resolve_operands (AML_LNOT_OP , &temp_desc, - walk_state); + status =acpi_ex_resolve_operands (AML_LOGICAL_NOT_OP , + &temp_desc, walk_state);if (ACPI_FAILURE (status)) { ACPI_EXCEPTION((AE_INFO, status, "While resolving operands for [%s]",
drivers/acpi/acpica/exoparg2.c +2 -2
@@ -298,7 +298,7 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state) NULL, &return_desc->integer.value);break ; -case AML_CONCAT_OP :/* Concatenate (Data1, Data2, Result) */ +case AML_CONCATENATE_OP :/* Concatenate (Data1, Data2, Result) */ status = acpi_ex_do_concatenate(operand[0], operand[1], &return_desc,
@@ -343,7 +343,7 @@ acpi_status acpi_ex_opcode_2A_1T_1R(struct acpi_walk_state *walk_state) operand[0]->buffer.pointer, length);break ; -case AML_CONCAT_RES_OP : +case AML_CONCATENATE_TEMPLATE_OP :/* concatenate_res_template (Buffer, Buffer, Result) (ACPI 2.0) */
drivers/acpi/acpica/exoparg6.c +8 -8
@@ -124,8 +124,8 @@ acpi_ex_do_match(u32 match_op,* Change to: (M == P[i]) */ status = -acpi_ex_do_logical_op (AML_LEQUAL_OP , match_obj, package_obj, - &logical_result); +acpi_ex_do_logical_op (AML_LOGICAL_EQUAL_OP , match_obj, + package_obj, &logical_result);if (ACPI_FAILURE (status)) {return (FALSE); }
@@ -137,8 +137,8 @@ acpi_ex_do_match(u32 match_op,* Change to: (M >= P[i]) (M not_less than P[i]) */ status = -acpi_ex_do_logical_op (AML_LLESS_OP , match_obj, package_obj, - &logical_result); +acpi_ex_do_logical_op (AML_LOGICAL_LESS_OP , match_obj, + package_obj, &logical_result);if (ACPI_FAILURE (status)) {return (FALSE); }
@@ -151,7 +151,7 @@ acpi_ex_do_match(u32 match_op,* Change to: (M > P[i]) */ status = -acpi_ex_do_logical_op (AML_LGREATER_OP , match_obj, +acpi_ex_do_logical_op (AML_LOGICAL_GREATER_OP , match_obj, package_obj, &logical_result);if (ACPI_FAILURE (status)) {return (FALSE);
@@ -164,7 +164,7 @@ acpi_ex_do_match(u32 match_op,* Change to: (M <= P[i]) (M not_greater than P[i]) */ status = -acpi_ex_do_logical_op (AML_LGREATER_OP , match_obj, +acpi_ex_do_logical_op (AML_LOGICAL_GREATER_OP , match_obj, package_obj, &logical_result);if (ACPI_FAILURE (status)) {return (FALSE);
@@ -178,8 +178,8 @@ acpi_ex_do_match(u32 match_op,* Change to: (M < P[i]) */ status = -acpi_ex_do_logical_op (AML_LLESS_OP , match_obj, package_obj, - &logical_result); +acpi_ex_do_logical_op (AML_LOGICAL_LESS_OP , match_obj, + package_obj, &logical_result);if (ACPI_FAILURE (status)) {return (FALSE); }
drivers/acpi/acpica/exresolv.c +2 -1
@@ -196,7 +196,8 @@ acpi_ex_resolve_object_to_value(union acpi_operand_object **stack_ptr,if ((walk_state->opcode ==AML_INT_METHODCALL_OP ) - || (walk_state->opcode ==AML_COPY_OP )) { + || (walk_state->opcode == +AML_COPY_OBJECT_OP )) {break ; }
drivers/acpi/acpica/exstore.c +3 -2
@@ -416,7 +416,7 @@ acpi_ex_store_object_to_node(union acpi_operand_object *source_desc,/* Only limited target types possible for everything except copy_object */ -if (walk_state->opcode !=AML_COPY_OP ) { +if (walk_state->opcode !=AML_COPY_OBJECT_OP ) {/* * Only copy_object allows all object types to be overwritten. For * target_ref(s), there are restrictions on the object types that
@@ -499,7 +499,8 @@ acpi_ex_store_object_to_node(union acpi_operand_object *source_desc,case ACPI_TYPE_STRING :case ACPI_TYPE_BUFFER : -if ((walk_state->opcode ==AML_COPY_OP ) || !implicit_conversion) { +if ((walk_state->opcode ==AML_COPY_OBJECT_OP ) || + !implicit_conversion) {/* * However, copy_object and Stores to arg_x do not perform * an implicit conversion, as per the ACPI specification.
drivers/acpi/acpica/exstoren.c +1 -1
@@ -107,7 +107,7 @@ acpi_ex_resolve_object(union acpi_operand_object **source_desc_ptr,/* For copy_object, no further validation necessary */ -if (walk_state->opcode ==AML_COPY_OP ) { +if (walk_state->opcode ==AML_COPY_OBJECT_OP ) {break ; }
drivers/acpi/acpica/nsaccess.c +1 -1
@@ -485,7 +485,7 @@ acpi_ns_lookup(union acpi_generic_state *scope_info, flags));break ; -case AML_MULTI_NAME_PREFIX_OP : +case AML_MULTI_NAME_PREFIX :/* More than one name_seg, search rules do not apply */
drivers/acpi/acpica/nsutils.c +3 -3
@@ -252,7 +252,7 @@ acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info) internal_name[1 ] =AML_DUAL_NAME_PREFIX ; result = &internal_name[2 ]; }else { - internal_name[1 ] =AML_MULTI_NAME_PREFIX_OP ; + internal_name[1 ] =AML_MULTI_NAME_PREFIX ; internal_name[2 ] = (char )num_segments; result = &internal_name[3 ]; }
@@ -274,7 +274,7 @@ acpi_status acpi_ns_build_internal_name(struct acpi_namestring_info *info) internal_name[i] =AML_DUAL_NAME_PREFIX ; result = &internal_name[(acpi_size )i +1 ]; }else { - internal_name[i] =AML_MULTI_NAME_PREFIX_OP ; + internal_name[i] =AML_MULTI_NAME_PREFIX ; internal_name[(acpi_size )i +1 ] = (char )num_segments; result = &internal_name[(acpi_size )i +2 ]; }
@@ -450,7 +450,7 @@ acpi_ns_externalize_name(u32 internal_name_length,*/ if (prefix_length < internal_name_length) {switch (internal_name[prefix_length]) { -case AML_MULTI_NAME_PREFIX_OP : +case AML_MULTI_NAME_PREFIX :/* <count> 4-byte names */
drivers/acpi/acpica/psargs.c +3 -3
@@ -186,7 +186,7 @@ char *acpi_ps_get_next_namestring(struct acpi_parse_state *parser_state) end +=1 + (2 *ACPI_NAME_SIZE );break ; -case AML_MULTI_NAME_PREFIX_OP : +case AML_MULTI_NAME_PREFIX :/* Multiple name segments, 4 chars each, count in next byte */
@@ -339,7 +339,7 @@ acpi_ps_get_next_namepath(struct acpi_walk_state *walk_state,/* 2) not_found during a cond_ref_of(x) is ok by definition */ else if (walk_state->op->common.aml_opcode == -AML_COND_REF_OF_OP ) { +AML_CONDITIONAL_REF_OF_OP ) { status =AE_OK ; }
@@ -352,7 +352,7 @@ acpi_ps_get_next_namepath(struct acpi_walk_state *walk_state, ((arg->common.parent->common.aml_opcode == AML_PACKAGE_OP) || (arg->common.parent->common.aml_opcode == - AML_VAR_PACKAGE_OP))) { + AML_VARIABLE_PACKAGE_OP))) { status =AE_OK ; } }
drivers/acpi/acpica/psloop.c +1 -1
@@ -254,7 +254,7 @@ acpi_ps_get_arguments(struct acpi_walk_state *walk_state,case AML_BUFFER_OP :case AML_PACKAGE_OP : -case AML_VAR_PACKAGE_OP : +case AML_VARIABLE_PACKAGE_OP : if ((op->common.parent) && (op->common.parent->common.aml_opcode ==
drivers/acpi/acpica/psopcode.c +5 -5
@@ -69,7 +69,7 @@ ACPI_MODULE_NAME("psopcode")AML_DEVICE_OP AML_THERMAL_ZONE_OPAML_METHOD_OP - AML_POWER_RES_OP + AML_POWER_RESOURCE_OPAML_PROCESSOR_OP AML_FIELD_OPAML_INDEX_FIELD_OP
@@ -95,7 +95,7 @@ ACPI_MODULE_NAME("psopcode")AML_DEVICE_OP AML_THERMAL_ZONE_OPAML_METHOD_OP - AML_POWER_RES_OP + AML_POWER_RESOURCE_OPAML_PROCESSOR_OP AML_FIELD_OPAML_INDEX_FIELD_OP
@@ -113,7 +113,7 @@ ACPI_MODULE_NAME("psopcode")AML_DEVICE_OP AML_THERMAL_ZONE_OPAML_METHOD_OP - AML_POWER_RES_OP + AML_POWER_RESOURCE_OPAML_PROCESSOR_OP AML_NAME_OPAML_ALIAS_OP
@@ -136,7 +136,7 @@ ACPI_MODULE_NAME("psopcode")AML_DEVICE_OP AML_THERMAL_ZONE_OPAML_METHOD_OP - AML_POWER_RES_OP + AML_POWER_RESOURCE_OPAML_PROCESSOR_OP AML_NAME_OPAML_ALIAS_OP
@@ -149,7 +149,7 @@ ACPI_MODULE_NAME("psopcode") must be deferred until needed AML_METHOD_OP -AML_VAR_PACKAGE_OP +AML_VARIABLE_PACKAGE_OP AML_CREATE_FIELD_OPAML_CREATE_BIT_FIELD_OP AML_CREATE_BYTE_FIELD_OP
drivers/acpi/acpica/psparse.c +3 -3
@@ -105,7 +105,7 @@ u16 acpi_ps_peek_opcode(struct acpi_parse_state * parser_state) aml = parser_state->aml; opcode = (u16 )ACPI_GET8 (aml); -if (opcode ==AML_EXTENDED_OP_PREFIX ) { +if (opcode ==AML_EXTENDED_PREFIX ) {/* Extended opcode, get the second opcode byte */
@@ -210,7 +210,7 @@ acpi_ps_complete_this_op(struct acpi_walk_state *walk_state, || (op->common.parent->common.aml_opcode == AML_BANK_FIELD_OP) || (op->common.parent->common.aml_opcode == - AML_VAR_PACKAGE_OP)) { + AML_VARIABLE_PACKAGE_OP)) { replacement_op =acpi_ps_alloc_op (AML_INT_RETURN_VALUE_OP , op->common.aml);
@@ -225,7 +225,7 @@ acpi_ps_complete_this_op(struct acpi_walk_state *walk_state,if ((op->common.aml_opcode ==AML_BUFFER_OP ) || (op->common.aml_opcode ==AML_PACKAGE_OP ) || (op->common.aml_opcode == -AML_VAR_PACKAGE_OP )) { +AML_VARIABLE_PACKAGE_OP )) { replacement_op = acpi_ps_alloc_op(op->common. aml_opcode,
drivers/acpi/acpica/pstree.c +1 -1
@@ -296,7 +296,7 @@ union acpi_parse_object *acpi_ps_get_child(union acpi_parse_object *op) child =acpi_ps_get_arg (op,1 );break ; -case AML_POWER_RES_OP : +case AML_POWER_RESOURCE_OP :case AML_INDEX_FIELD_OP : child =acpi_ps_get_arg (op,2 );
Signature · 1 line
2.7.4
PATCH 10/15 ACPICA: iasl: Fix IORT SMMU GSI disassembling
In reply to Lv ZhengACPICA commit 637b88de24a78c20478728d9d66632b06fcaa5bf
If the IORT template is compiled and then iort.aml binary disassembled to iort.dsl, SMMUv1 node lists incorrect offset for SMMU_Nsg_cfg_irpt Interrupt:
[0ECh 0236 8] SMMU_Nsg_irpt Interrupt : 0000000000000000
[0ECh 0236 8] SMMU_Nsg_cfg_irpt Interrupt : 0000000000000000
This is because iasl hasn't implemented SMMU GSI decoding yet.
This patch fixes this issue by preparing structures for decoding IORT SMMU GSI. ACPICA BZ 1340, reported by Alexei Fedorov, fixed by Lv Zheng.
--- include/acpi/actbl2.h | 9 +++++++++ 1 file changed, 9 insertions(+)
include/acpi/actbl2.h +9 -0
@@ -783,6 +783,15 @@ struct acpi_iort_smmu {#define ACPI_IORT_SMMU_DVM_SUPPORTED (1)#define ACPI_IORT_SMMU_COHERENT_WALK (1<<1) +/* Global interrupt format */ + +struct acpi_iort_smmu_gsi { +u32 nsg_irpt; +u32 nsg_irpt_flags; +u32 nsg_cfg_irpt; +u32 nsg_cfg_irpt_flags; +}; +struct acpi_iort_smmu_v3 {u64 base_address;/* SMMUv3 base address */ u32 flags;
Signature · 1 line
2.7.4
PATCH 11/15 ACPICA: Disassembler: Do not unconditionally remove temporary names
In reply to Lv ZhengFrom: "David E. Box" <[email protected]>
ACPICA commit c46f496df41e53a368f877f88b70bdfc9bd6fdbe
Change the Switch disassembly code to check if the conversion can be done before removing temporary (_T_x) names. Prevents invalid disassembly of AML created by older compilers (circa 2005).
--- drivers/acpi/acpica/aclocal.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-)
drivers/acpi/acpica/aclocal.h +4 -3
@@ -784,9 +784,10 @@ union acpi_parse_value {#define ACPI_DASM_LNOT_SUFFIX 0x09/* End of a Lnot_equal (etc.) pair of opcodes */ #define ACPI_DASM_HID_STRING 0x0A/* String is a _HID or _CID */ #define ACPI_DASM_IGNORE_SINGLE 0x0B/* Ignore the opcode but not it's children */ -#define ACPI_DASM_SWITCH_PREDICATE 0x0C/* Object is a predicate for a Switch or Case block */ -#define ACPI_DASM_CASE 0x0D/* If/Else is a Case in a Switch/Case block */ -#define ACPI_DASM_DEFAULT 0x0E/* Else is a Default in a Switch/Case block */ +#define ACPI_DASM_SWITCH 0x0C/* While is a Switch */ +#define ACPI_DASM_SWITCH_PREDICATE 0x0D/* Object is a predicate for a Switch or Case block */ +#define ACPI_DASM_CASE 0x0E/* If/Else is a Case in a Switch/Case block */ +#define ACPI_DASM_DEFAULT 0x0F/* Else is a Default in a Switch/Case block */ /* * Generic operation (for example: If, While, Store)
Signature · 1 line
2.7.4
PATCH 12/15 ACPICA: iasl: add ASL conversion tool
In reply to Lv ZhengFrom: Bob Moore <[email protected]>
ACPICA commit c04d310039d3e0ed1cb62876fe7e596fbc75ab01
The key feature of this utility is that the original comments within the input ASL files are preserved during the conversion process, and included within the converted ASL+ file -- thus creating a transparent conversion of existing ASL files to ASL+ (ASL 2.0)
--- drivers/acpi/acpica/acconvert.h | 144 ++++++++++++++++++++++++++++++++++++++++ drivers/acpi/acpica/acglobal.h | 53 +++++++++++++++ drivers/acpi/acpica/aclocal.h | 99 ++++++++++++++++++++++----- drivers/acpi/acpica/acmacros.h | 35 ++++++++++ drivers/acpi/acpica/acopcode.h | 2 + drivers/acpi/acpica/amlcode.h | 4 +- drivers/acpi/acpica/psargs.c | 23 +++++++ drivers/acpi/acpica/psloop.c | 32 +++++++++ drivers/acpi/acpica/psobject.c | 38 +++++++++++ drivers/acpi/acpica/psopcode.c | 5 +- drivers/acpi/acpica/psopinfo.c | 2 +- drivers/acpi/acpica/pstree.c | 7 ++ drivers/acpi/acpica/psutils.c | 11 +++ drivers/acpi/acpica/utalloc.c | 50 ++++++++++++++ drivers/acpi/acpica/utdebug.c | 1 + include/acpi/acconfig.h | 1 + include/acpi/actbl2.h | 1 + 17 files changed, 490 insertions(+), 18 deletions(-) create mode 100644 drivers/acpi/acpica/acconvert.h
drivers/acpi/acpica/acconvert.h new file +144 -0
@@ -0,0 +1,144 @@ +/****************************************************************************** +* +* Module Name: acapps - common include for ACPI applications/tools +* +*****************************************************************************/ + +/* +* Copyright (C) 2000 - 2017, Intel Corp. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions, and the following disclaimer, +* without modification. +* 2. Redistributions in binary form must reproduce at minimum a disclaimer +* substantially similar to the "NO WARRANTY" disclaimer below +* ("Disclaimer") and any redistribution must be conditioned upon +* including a substantially similar Disclaimer requirement for further +* binary redistribution. +* 3. Neither the names of the above-listed copyright holders nor the names +* of any contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* Alternatively, this software may be distributed under the terms of the +* GNU General Public License ("GPL") version 2 as published by the Free +* Software Foundation. +* +* NO WARRANTY +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR +* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +* HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGES. +*/ + +#ifndef _ACCONVERT +#define _ACCONVERT + +/* Definitions for comment state */ + +#define ASL_COMMENT_STANDARD 1 +#define ASLCOMMENT_INLINE 2 +#define ASL_COMMENT_OPEN_PAREN 3 +#define ASL_COMMENT_CLOSE_PAREN 4 +#define ASL_COMMENT_CLOSE_BRACE 5 + +/* Definitions for comment print function*/ + +#define AML_COMMENT_STANDARD 1 +#define AMLCOMMENT_INLINE 2 +#define AML_COMMENT_END_NODE 3 +#define AML_NAMECOMMENT 4 +#define AML_COMMENT_CLOSE_BRACE 5 +#define AML_COMMENT_ENDBLK 6 +#define AML_COMMENT_INCLUDE 7 + +#ifdef ACPI_ASL_COMPILER +/* +* cvcompiler +*/ +void +cv_process_comment (struct asl_comment_state current_state, +char *string_buffer,int c1); + +void +cv_process_comment_type2 (struct asl_comment_state current_state, +char *string_buffer); + +u32 cv_calculate_comment_lengths (union acpi_parse_object *op); + +void cv_process_comment_state (char input); + +char *cv_append_inline_comment (char *inline_comment,char *to_add); + +void cv_add_to_comment_list (char *to_add); + +void cv_place_comment (u8 type,char *comment_string); + +u32 cv_parse_op_block_type (union acpi_parse_object *op); + +struct acpi_comment_node *cv_comment_node_calloc (void ); + +void cg_write_aml_def_block_comment (union acpi_parse_object *op); + +void +cg_write_one_aml_comment (union acpi_parse_object *op, +char *comment_to_print,u8 input_option); + +void cg_write_aml_comment (union acpi_parse_object *op); + +/* +* cvparser +*/ +void +cv_init_file_tree (struct acpi_table_header *table, +u8 *aml_start,u32 aml_length); + +void cv_clear_op_comments (union acpi_parse_object *op); + +struct acpi_file_node *cv_filename_exists (char *filename, +struct acpi_file_node *head); + +void cv_label_file_node (union acpi_parse_object *op); + +void +cv_capture_list_comments (struct acpi_parse_state *parser_state, +struct acpi_comment_node *list_head, +struct acpi_comment_node *list_tail); + +void cv_capture_comments_only (struct acpi_parse_state *parser_state); + +void cv_capture_comments (struct acpi_walk_state *walk_state); + +void cv_transfer_comments (union acpi_parse_object *op); + +/* +* cvdisasm +*/ +void cv_switch_files (u32 level,union acpi_parse_object *op); + +u8 cv_file_has_switched (union acpi_parse_object *op); + +void cv_close_paren_write_comment (union acpi_parse_object *op,u32 level); + +void cv_close_brace_write_comment (union acpi_parse_object *op,u32 level); + +void +cv_print_one_comment_list (struct acpi_comment_node *comment_list,u32 level); + +void +cv_print_one_comment_type (union acpi_parse_object *op, +u8 comment_type,char *end_str,u32 level); + +#endif + +#endif /* _ACCONVERT */
drivers/acpi/acpica/acglobal.h +53 -0
59 lines not on this page · raw message
drivers/acpi/acpica/aclocal.h +84 -15
130 lines not on this page · raw message
drivers/acpi/acpica/acmacros.h +35 -0
@@ -493,4 +493,39 @@#define ACPI_IS_OCTAL_DIGIT (d) (((char)(d) >= '0') && ((char)(d) <= '7')) +/* +* Macors used for the ASL-/ASL+ converter utility +*/ +#ifdef ACPI_ASL_COMPILER + +#define ASL_CV_LABEL_FILENODE (a) cv_label_file_node(a); +#define ASL_CV_CAPTURE_COMMENTS_ONLY (a) cv_capture_comments_only (a); +#define ASL_CV_CAPTURE_COMMENTS (a) cv_capture_comments (a); +#define ASL_CV_TRANSFER_COMMENTS (a) cv_transfer_comments (a); +#define ASL_CV_CLOSE_PAREN (a,b) cv_close_paren_write_comment(a,b); +#define ASL_CV_CLOSE_BRACE (a,b) cv_close_brace_write_comment(a,b); +#define ASL_CV_SWITCH_FILES (a,b) cv_switch_files(a,b); +#define ASL_CV_CLEAR_OP_COMMENTS (a) cv_clear_op_comments(a); +#define ASL_CV_PRINT_ONE_COMMENT (a,b,c,d) cv_print_one_comment_type (a,b,c,d); +#define ASL_CV_PRINT_ONE_COMMENT_LIST (a,b) cv_print_one_comment_list (a,b); +#define ASL_CV_FILE_HAS_SWITCHED (a) cv_file_has_switched(a) +#define ASL_CV_INIT_FILETREE (a,b,c) cv_init_file_tree(a,b,c); + +#else + +#define ASL_CV_LABEL_FILENODE (a) +#define ASL_CV_CAPTURE_COMMENTS_ONLY (a) +#define ASL_CV_CAPTURE_COMMENTS (a) +#define ASL_CV_TRANSFER_COMMENTS (a) +#define ASL_CV_CLOSE_PAREN (a,b) acpi_os_printf (")"); +#define ASL_CV_CLOSE_BRACE (a,b) acpi_os_printf ("}"); +#define ASL_CV_SWITCH_FILES (a,b) +#define ASL_CV_CLEAR_OP_COMMENTS (a) +#define ASL_CV_PRINT_ONE_COMMENT (a,b,c,d) +#define ASL_CV_PRINT_ONE_COMMENT_LIST (a,b) +#define ASL_CV_FILE_HAS_SWITCHED (a) 0 +#define ASL_CV_INIT_FILETREE (a,b,c) + +#endif +#endif /* ACMACROS_H */
drivers/acpi/acpica/acopcode.h +2 -0
@@ -90,6 +90,7 @@#define ARGP_BUFFER_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_BYTELIST)#define ARGP_BYTE_OP ARGP_LIST1 (ARGP_BYTEDATA)#define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING) +#define ARGP_COMMENT_OP ARGP_LIST2 (ARGP_BYTEDATA, ARGP_COMMENT)#define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)#define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SIMPLENAME, ARGP_TARGET)
@@ -223,6 +224,7 @@#define ARGI_BUFFER_OP ARGI_LIST1 (ARGI_INTEGER)#define ARGI_BYTE_OP ARGI_INVALID_OPCODE#define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE +#define ARGI_COMMENT_OP ARGI_INVALID_OPCODE#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_ANYTYPE, ARGI_ANYTYPE, ARGI_TARGETREF)#define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF)#define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF)
drivers/acpi/acpica/amlcode.h +3 -1
@@ -137,7 +137,8 @@#define AML_NOOP_OP (u16) 0xa3#define AML_RETURN_OP (u16) 0xa4#define AML_BREAK_OP (u16) 0xa5 -#define AML_BREAKPOINT_OP (u16) 0xcc +#define AML_COMMENT_OP (u16) 0xa9 +#define AML_BREAKPOINT_OP (u16) 0xcc#define AML_ONES_OP (u16) 0xff/*
@@ -236,6 +237,7 @@#define ARGP_SIMPLENAME 0x12/* name_string | local_term | arg_term */ #define ARGP_NAME_OR_REF 0x13/* For object_type only */ #define ARGP_MAX 0x13 +#define ARGP_COMMENT 0x14/* * Resolved argument types for the AML Interpreter
drivers/acpi/acpica/psargs.c +23 -0
@@ -47,6 +47,7 @@#include "amlcode.h" #include "acnamesp.h" #include "acdispat.h" +#include "acconvert.h" #define _COMPONENT ACPI_PARSERACPI_MODULE_NAME ("psargs" )
@@ -502,6 +503,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_stateACPI_FUNCTION_TRACE (ps_get_next_field); +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state); aml = parser_state->aml;/* Determine field type */
@@ -546,6 +548,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state/* Decode the field type */ +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state);switch (opcode) {case AML_INT_NAMEDFIELD_OP :
@@ -555,6 +558,22 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_stateacpi_ps_set_name (field, name); parser_state->aml +=ACPI_NAME_SIZE ; +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state); + +#ifdef ACPI_ASL_COMPILER +/* +* Because the package length isn't represented as a parse tree object, +* take comments surrounding this and add to the previously created +* parse node. +*/ +if (field->common.inline_comment) { + field->common.name_comment = + field->common.inline_comment; + } + field->common.inline_comment = acpi_gbl_current_inline_comment; + acpi_gbl_current_inline_comment =NULL ; +#endif +/* Get the length which is encoded as a package length */ field->common.value.size =
@@ -609,11 +628,13 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_stateif (ACPI_GET8 (parser_state->aml) ==AML_BUFFER_OP ) { parser_state->aml++; +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state); pkg_end = parser_state->aml; pkg_length =acpi_ps_get_next_package_length (parser_state); pkg_end += pkg_length; +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state);if (parser_state->aml < pkg_end) {/* Non-empty list */
@@ -630,6 +651,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state opcode =ACPI_GET8 (parser_state->aml); parser_state->aml++; +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state);switch (opcode) {case AML_BYTE_OP :/* AML_BYTEDATA_ARG */
@@ -660,6 +682,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state/* Fill in bytelist data */ +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state); arg->named.value.size = buffer_length; arg->named.data = parser_state->aml; }
drivers/acpi/acpica/psloop.c +32 -0
@@ -55,6 +55,7 @@#include "acparser.h" #include "acdispat.h" #include "amlcode.h" +#include "acconvert.h" #define _COMPONENT ACPI_PARSERACPI_MODULE_NAME ("psloop" )
@@ -132,6 +133,21 @@ acpi_ps_get_arguments(struct acpi_walk_state *walk_state, !walk_state->arg_count) { walk_state->aml = walk_state->parser_state.aml; +switch (op->common.aml_opcode) { +case AML_METHOD_OP : +case AML_BUFFER_OP : +case AML_PACKAGE_OP : +case AML_VARIABLE_PACKAGE_OP : +case AML_WHILE_OP : + +break ; + +default : + +ASL_CV_CAPTURE_COMMENTS (walk_state); +break ; + } + status = acpi_ps_get_next_arg(walk_state, &(walk_state->parser_state),
@@ -480,6 +496,8 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state)/* Iterative parsing loop, while there is more AML to process: */ while ((parser_state->aml < parser_state->aml_end) || (op)) { +ASL_CV_CAPTURE_COMMENTS (walk_state); + aml_op_start = parser_state->aml;if (!op) { status =
@@ -516,6 +534,20 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state)*/ walk_state->arg_count =0 ; +switch (op->common.aml_opcode) { +case AML_BYTE_OP : +case AML_WORD_OP : +case AML_DWORD_OP : +case AML_QWORD_OP : + +break ; + +default : + +ASL_CV_CAPTURE_COMMENTS (walk_state); +break ; + } +/* Are there any arguments that must be processed? */ if (walk_state->arg_types) {
drivers/acpi/acpica/psobject.c +38 -0
@@ -45,6 +45,7 @@#include "accommon.h" #include "acparser.h" #include "amlcode.h" +#include "acconvert.h" #define _COMPONENT ACPI_PARSERACPI_MODULE_NAME ("psobject" )
@@ -190,6 +191,7 @@ acpi_ps_build_named_op(struct acpi_walk_state *walk_state,*/ while (GET_CURRENT_ARG_TYPE (walk_state->arg_types) && (GET_CURRENT_ARG_TYPE (walk_state->arg_types) !=ARGP_NAME )) { +ASL_CV_CAPTURE_COMMENTS (walk_state); status = acpi_ps_get_next_arg(walk_state, &(walk_state->parser_state),
@@ -203,6 +205,18 @@ acpi_ps_build_named_op(struct acpi_walk_state *walk_state,INCREMENT_ARG_LIST (walk_state->arg_types); } +/* are there any inline comments associated with the name_seg?? If so, save this. */ + +ASL_CV_CAPTURE_COMMENTS (walk_state); + +#ifdef ACPI_ASL_COMPILER +if (acpi_gbl_current_inline_comment !=NULL ) { + unnamed_op->common.name_comment = + acpi_gbl_current_inline_comment; + acpi_gbl_current_inline_comment =NULL ; + } +#endif +/* * Make sure that we found a NAME and didn't run out of arguments */
@@ -243,6 +257,30 @@ acpi_ps_build_named_op(struct acpi_walk_state *walk_state,acpi_ps_append_arg (*op, unnamed_op->common.value.arg); +#ifdef ACPI_ASL_COMPILER + +/* save any comments that might be associated with unnamed_op. */ + + (*op)->common.inline_comment = unnamed_op->common.inline_comment; + (*op)->common.end_node_comment = unnamed_op->common.end_node_comment; + (*op)->common.close_brace_comment = + unnamed_op->common.close_brace_comment; + (*op)->common.name_comment = unnamed_op->common.name_comment; + (*op)->common.comment_list = unnamed_op->common.comment_list; + (*op)->common.end_blk_comment = unnamed_op->common.end_blk_comment; + (*op)->common.cv_filename = unnamed_op->common.cv_filename; + (*op)->common.cv_parent_filename = + unnamed_op->common.cv_parent_filename; + (*op)->named.aml = unnamed_op->common.aml; + + unnamed_op->common.inline_comment =NULL ; + unnamed_op->common.end_node_comment =NULL ; + unnamed_op->common.close_brace_comment =NULL ; + unnamed_op->common.name_comment =NULL ; + unnamed_op->common.comment_list =NULL ; + unnamed_op->common.end_blk_comment =NULL ; +#endif +if ((*op)->common.aml_opcode ==AML_REGION_OP || (*op)->common.aml_opcode ==AML_DATA_REGION_OP ) {/*
drivers/acpi/acpica/psopcode.c +4 -1
@@ -652,7 +652,10 @@ const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES] = {/* 81 */ ACPI_OP ("External" ,ARGP_EXTERNAL_OP ,ARGI_EXTERNAL_OP ,ACPI_TYPE_ANY ,AML_CLASS_EXECUTE ,/* ? */ -AML_TYPE_EXEC_3A_0T_0R ,AML_FLAGS_EXEC_3A_0T_0R ) +AML_TYPE_EXEC_3A_0T_0R ,AML_FLAGS_EXEC_3A_0T_0R ), +/* 82 */ ACPI_OP ("Comment" ,ARGP_COMMENT_OP ,ARGI_COMMENT_OP , +ACPI_TYPE_STRING ,AML_CLASS_ARGUMENT , +AML_TYPE_LITERAL ,AML_CONSTANT ) /*! [End] no source code translation !*/ };
drivers/acpi/acpica/psopinfo.c +1 -1
@@ -226,7 +226,7 @@ const u8 acpi_gbl_short_op_index[256] = {/* 0x90 */ 0x38 ,0x39 ,0x3a ,0x3b ,0x3c ,0x3d ,0x73 ,0x74 ,/* 0x98 */ 0x75 ,0x76 , _UNK, _UNK,0x77 ,0x78 ,0x79 ,0x7A ,/* 0xA0 */ 0x3e ,0x3f ,0x40 ,0x41 ,0x42 ,0x43 ,0x60 ,0x61 , -/* 0xA8 */ 0x62 , _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, +/* 0xA8 */ 0x62 ,0x82 , _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,/* 0xB0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,/* 0xB8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0xC0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
drivers/acpi/acpica/pstree.c +7 -0
@@ -45,6 +45,7 @@#include "accommon.h" #include "acparser.h" #include "amlcode.h" +#include "acconvert.h" #define _COMPONENT ACPI_PARSERACPI_MODULE_NAME ("pstree" )
@@ -216,6 +217,7 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, next =acpi_ps_get_arg (op,0 );if (next) { +ASL_CV_LABEL_FILENODE (next);return (next); }
@@ -223,6 +225,7 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, next = op->common.next;if (next) { +ASL_CV_LABEL_FILENODE (next);return (next); }
@@ -233,6 +236,8 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin,while (parent) { arg =acpi_ps_get_arg (parent,0 );while (arg && (arg != origin) && (arg != op)) { + +ASL_CV_LABEL_FILENODE (arg); arg = arg->common.next; }
@@ -247,6 +252,7 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin,/* Found sibling of parent */ +ASL_CV_LABEL_FILENODE (parent->common.next);return (parent->common.next); }
@@ -254,6 +260,7 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, parent = parent->common.parent; } +ASL_CV_LABEL_FILENODE (next);return (next); }
drivers/acpi/acpica/psutils.c +11 -0
@@ -45,6 +45,7 @@#include "accommon.h" #include "acparser.h" #include "amlcode.h" +#include "acconvert.h" #define _COMPONENT ACPI_PARSERACPI_MODULE_NAME ("psutils" )
@@ -152,6 +153,15 @@ union acpi_parse_object *acpi_ps_alloc_op(u16 opcode, u8 *aml)acpi_ps_init_op (op, opcode); op->common.aml = aml; op->common.flags = flags; +ASL_CV_CLEAR_OP_COMMENTS (op); + +if (opcode ==AML_SCOPE_OP ) { + acpi_gbl_current_scope = op; + } + } + +if (gbl_capture_comments) { +ASL_CV_TRANSFER_COMMENTS (op); }return (op);
@@ -174,6 +184,7 @@ void acpi_ps_free_op(union acpi_parse_object *op) {ACPI_FUNCTION_NAME (ps_free_op); +ASL_CV_CLEAR_OP_COMMENTS (op);if (op->common.aml_opcode ==AML_INT_RETURN_VALUE_OP ) {ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS ,"Free retval op: %p\n" , op));
drivers/acpi/acpica/utalloc.c +50 -0
62 lines not on this page · raw message
drivers/acpi/acpica/utdebug.c +1 -0
@@ -627,4 +627,5 @@ acpi_trace_point(acpi_trace_event_type type, u8 begin, u8 *aml, char *pathname) } ACPI_EXPORT_SYMBOL(acpi_trace_point) +#endif
include/acpi/acconfig.h +1 -0
@@ -78,6 +78,7 @@#define ACPI_MAX_EXTPARSE_CACHE_DEPTH 96/* Parse tree objects */ #define ACPI_MAX_OBJECT_CACHE_DEPTH 96/* Interpreter operand objects */ #define ACPI_MAX_NAMESPACE_CACHE_DEPTH 96/* Namespace objects */ +#define ACPI_MAX_COMMENT_CACHE_DEPTH 96/* Comments for the -ca option */ /* * Should the subsystem abort the loading of an ACPI table if the
include/acpi/actbl2.h +1 -0
@@ -87,6 +87,7 @@#define ACPI_SIG_WDAT "WDAT"/* Watchdog Action Table */ #define ACPI_SIG_WDDT "WDDT"/* Watchdog Timer Description Table */ #define ACPI_SIG_WDRT "WDRT"/* Watchdog Resource Table */ +#define ACPI_SIG_XXXX "XXXX"/* Intermediate AML header for ASL/ASL+ converter */ #ifdef ACPI_UNDEFINED_TABLES /*
Signature · 1 line
2.7.4
kbuild test robot
build botRe: [PATCH 12/15] ACPICA: iasl: add ASL conversion tool
reproduce:
Hi Bob,
[auto build test ERROR on pm/linux-next]
[also build test ERROR on v4.11-rc8 next-20170426]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
url: https://github.com/0day-ci/linux/commits/Lv-Zheng/ACPICA-Disassembler-Enhance-resource-descriptor-detection/20170427-010527 base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next config: x86_64-acpi-redef (attached as .config) compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce: # save the attached .config to linux build tree make ARCH=x86_64
Note: the linux-review/Lv-Zheng/ACPICA-Disassembler-Enhance-resource-descriptor-detection/20170427-010527 HEAD 3e033e5bcdf2b5e89028d19030d8479ac5b855bf builds fine.
It only hurts bisectibility.
All errors (new ones prefixed by >>):
In file included from drivers/acpi/acpica/accommon.h:56:0,
from drivers/acpi/acpica/utcopy.c:45:
>> drivers/acpi/acpica/aclocal.h:841:2: error: unknown type name 'FILE'
FILE *file;
^~~~vim +/FILE +841 drivers/acpi/acpica/aclocal.h
835
836 /*
837 * File node - used for "Include" operator file stack and
838 * depdendency tree for the -ca option
839 */
840 struct acpi_file_node {
> 841 FILE *file;
842 char *filename;
843 char *file_start; /* Points to AML and indicates when the AML for this particular file starts. */
844 char *file_end; /* Points to AML and indicates when the AML for this particular file ends. */
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
RE: [PATCH 12/15] ACPICA: iasl: add ASL conversion tool
Hi,
It's fixed by PATCH 14 in the same series.
I'll combine them in order not to break bisection processes.
Thanks
Lv
Quoted 48 lines
From: lkp
Subject: Re: [PATCH 12/15] ACPICA: iasl: add ASL conversion toolHi Bob,
[auto build test ERROR on pm/linux-next]
[also build test ERROR on v4.11-rc8 next-20170426]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]url: https://github.com/0day-ci/linux/commits/Lv-Zheng/ACPICA-Disassembler-Enhance-resource-
descriptor-detection/20170427-010527
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
config: x86_64-acpi-redef (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce:# save the attached .config to linux build tree make ARCH=x86_64Note: the linux-review/Lv-Zheng/ACPICA-Disassembler-Enhance-resource-descriptor-detection/20170427- 010527 HEAD
3e033e5bcdf2b5e89028d19030d8479ac5b855bfbuilds fine.
It only hurts bisectibility.All errors (new ones prefixed by >>):
In file included from
drivers/acpi/acpica/accommon.h:56:0,
fromdrivers/acpi/acpica/utcopy.c:45:Quoted 1 line
Quoted 1 line
drivers/acpi/acpica/aclocal.h:841:2: error: unknown type name 'FILE'FILE *file; ^~~~vim +/FILE +841
drivers/acpi/acpica/aclocal.h835 836 /* 837 * File node - used for "Include" operator file stack and 838 * depdendency tree for the -ca option 839 */ 840 struct acpi_file_node {Quoted 1 line
841 FILE *file;
842 char *filename;
843 char*file_start; /* Points to AML and indicates when the AML for this particular
file starts. */
844 char*file_end; /* Points to AML and indicates when the AML for this
particular file ends. */---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
Re: [PATCH 12/15] ACPICA: iasl: add ASL conversion tool
Quoted 4 lines · Lv
Hi,
It's fixed by PATCH 14 in the same series.
I'll combine them in order not to break bisection processes.
OK, thanks!
Quoted 48 lines
Quoted 48 lines
From: lkp
Subject: Re: [PATCH 12/15] ACPICA: iasl: add ASL conversion toolHi Bob,
[auto build test ERROR on pm/linux-next]
[also build test ERROR on v4.11-rc8 next-20170426]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]url: https://github.com/0day-ci/linux/commits/Lv-Zheng/ACPICA-Disassembler-Enhance-resource-
descriptor-detection/20170427-010527
base: https://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm.git linux-next
config: x86_64-acpi-redef (attached as .config)
compiler: gcc-6 (Debian 6.2.0-3) 6.2.0 20160901 reproduce:# save the attached .config to linux build tree make ARCH=x86_64Note: the linux-review/Lv-Zheng/ACPICA-Disassembler-Enhance-resource-descriptor-detection/20170427- 010527 HEAD
3e033e5bcdf2b5e89028d19030d8479ac5b855bfbuilds fine.
It only hurts bisectibility.All errors (new ones prefixed by >>):
In file included from
drivers/acpi/acpica/accommon.h:56:0,
fromdrivers/acpi/acpica/utcopy.c:45:Quoted 1 line
Quoted 1 line
drivers/acpi/acpica/aclocal.h:841:2: error: unknown type name 'FILE'FILE *file; ^~~~vim +/FILE +841
drivers/acpi/acpica/aclocal.h835 836 /* 837 * File node - used for "Include" operator file stack and 838 * depdendency tree for the -ca option 839 */ 840 struct acpi_file_node {Quoted 1 line
841 FILE *file;
842 char *filename;
843 char*file_start; /* Points to AML and indicates when the AML for this particular
file starts. */
844 char*file_end; /* Points to AML and indicates when the AML for this
particular file ends. */---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
PATCH 13/15 ACPICA: Local cache support: Allow small cache objects
In reply to Lv ZhengFrom: Bob Moore <[email protected]>
ACPICA commit 9c54b8bbd483421ef2fef5225c00f1655b4a491c
Remove apparently arbitrary restriction on the size of the cache objects to 16 (in acpi_os_create_cache). Now, the input object size must be simply non-zero.
--- drivers/acpi/acpica/utcache.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/acpi/acpica/utcache.c +1 -1
@@ -71,7 +71,7 @@ acpi_os_create_cache(char *cache_name,ACPI_FUNCTION_ENTRY (); -if (!cache_name || !return_cache || (object_size <16 )) { +if (!cache_name || !return_cache || !object_size) {return (AE_BAD_PARAMETER ); }
Signature · 1 line
2.7.4
PATCH 14/15 ACPICA: Fix build for FreeBSD kernel.
In reply to Lv ZhengFrom: Jung-uk Kim <[email protected]>
ACPICA commit a65c1df7e6b4bad8e37df822018c40c6c446add9
FILE is only defined in user land.
--- drivers/acpi/acpica/aclocal.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/acpi/acpica/aclocal.h +1 -1
@@ -838,7 +838,7 @@ struct acpi_comment_addr_node {* depdendency tree for the -ca option */ struct acpi_file_node { -FILE *file; +void *file;char *filename;char *file_start;/* Points to AML and indicates when the AML for this particular file starts. */ char *file_end;/* Points to AML and indicates when the AML for this particular file ends. */
Signature · 1 line
2.7.4
PATCH 15/15 ACPICA: Update version to 20170303
In reply to Lv ZhengFrom: Bob Moore <[email protected]>
ACPICA commit db13f9ffbdf16c0b4fb92d051c14c7b96f379f3f ACPICA commit c55bb526ac9233fe4abc5ea923e136354ce7779c
Version 20170224.
Version 20170303.
--- include/acpi/acpixf.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
include/acpi/acpixf.h +1 -1
@@ -46,7 +46,7 @@/* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20170119 +#define ACPI_CA_VERSION 0x20170303#include <acpi/acconfig.h> #include <acpi/actypes.h>
Signature · 1 line
2.7.4
PATCH v2 1/1 ACPICA: iasl: add ASL conversion tool
In reply to Lv ZhengFrom: Bob Moore <[email protected]>
ACPICA commit c04d310039d3e0ed1cb62876fe7e596fbc75ab01 ACPICA commit a65c1df7e6b4bad8e37df822018c40c6c446add9
The key feature of this utility is that the original comments within the input ASL files are preserved during the conversion process, and included within the converted ASL+ file -- thus creating a transparent conversion of existing ASL files to ASL+ (ASL 2.0)
This patch is an automatic generation of the ASL converter commit, Linux kernel isn't affected by the functionality provided in this commit, but requires the linuxized changes to support future ACPICA release automation.
--- drivers/acpi/acpica/acconvert.h | 144 ++++++++++++++++++++++++++++++++++++++++ drivers/acpi/acpica/acglobal.h | 53 +++++++++++++++ drivers/acpi/acpica/aclocal.h | 99 ++++++++++++++++++++++----- drivers/acpi/acpica/acmacros.h | 35 ++++++++++ drivers/acpi/acpica/acopcode.h | 2 + drivers/acpi/acpica/amlcode.h | 4 +- drivers/acpi/acpica/psargs.c | 23 +++++++ drivers/acpi/acpica/psloop.c | 32 +++++++++ drivers/acpi/acpica/psobject.c | 38 +++++++++++ drivers/acpi/acpica/psopcode.c | 5 +- drivers/acpi/acpica/psopinfo.c | 2 +- drivers/acpi/acpica/pstree.c | 7 ++ drivers/acpi/acpica/psutils.c | 11 +++ drivers/acpi/acpica/utalloc.c | 50 ++++++++++++++ drivers/acpi/acpica/utdebug.c | 1 + include/acpi/acconfig.h | 1 + include/acpi/actbl2.h | 1 + 17 files changed, 490 insertions(+), 18 deletions(-) create mode 100644 drivers/acpi/acpica/acconvert.h
drivers/acpi/acpica/acconvert.h new file +144 -0
@@ -0,0 +1,144 @@ +/****************************************************************************** +* +* Module Name: acapps - common include for ACPI applications/tools +* +*****************************************************************************/ + +/* +* Copyright (C) 2000 - 2017, Intel Corp. +* All rights reserved. +* +* Redistribution and use in source and binary forms, with or without +* modification, are permitted provided that the following conditions +* are met: +* 1. Redistributions of source code must retain the above copyright +* notice, this list of conditions, and the following disclaimer, +* without modification. +* 2. Redistributions in binary form must reproduce at minimum a disclaimer +* substantially similar to the "NO WARRANTY" disclaimer below +* ("Disclaimer") and any redistribution must be conditioned upon +* including a substantially similar Disclaimer requirement for further +* binary redistribution. +* 3. Neither the names of the above-listed copyright holders nor the names +* of any contributors may be used to endorse or promote products derived +* from this software without specific prior written permission. +* +* Alternatively, this software may be distributed under the terms of the +* GNU General Public License ("GPL") version 2 as published by the Free +* Software Foundation. +* +* NO WARRANTY +* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR +* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +* HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +* POSSIBILITY OF SUCH DAMAGES. +*/ + +#ifndef _ACCONVERT +#define _ACCONVERT + +/* Definitions for comment state */ + +#define ASL_COMMENT_STANDARD 1 +#define ASLCOMMENT_INLINE 2 +#define ASL_COMMENT_OPEN_PAREN 3 +#define ASL_COMMENT_CLOSE_PAREN 4 +#define ASL_COMMENT_CLOSE_BRACE 5 + +/* Definitions for comment print function*/ + +#define AML_COMMENT_STANDARD 1 +#define AMLCOMMENT_INLINE 2 +#define AML_COMMENT_END_NODE 3 +#define AML_NAMECOMMENT 4 +#define AML_COMMENT_CLOSE_BRACE 5 +#define AML_COMMENT_ENDBLK 6 +#define AML_COMMENT_INCLUDE 7 + +#ifdef ACPI_ASL_COMPILER +/* +* cvcompiler +*/ +void +cv_process_comment (struct asl_comment_state current_state, +char *string_buffer,int c1); + +void +cv_process_comment_type2 (struct asl_comment_state current_state, +char *string_buffer); + +u32 cv_calculate_comment_lengths (union acpi_parse_object *op); + +void cv_process_comment_state (char input); + +char *cv_append_inline_comment (char *inline_comment,char *to_add); + +void cv_add_to_comment_list (char *to_add); + +void cv_place_comment (u8 type,char *comment_string); + +u32 cv_parse_op_block_type (union acpi_parse_object *op); + +struct acpi_comment_node *cv_comment_node_calloc (void ); + +void cg_write_aml_def_block_comment (union acpi_parse_object *op); + +void +cg_write_one_aml_comment (union acpi_parse_object *op, +char *comment_to_print,u8 input_option); + +void cg_write_aml_comment (union acpi_parse_object *op); + +/* +* cvparser +*/ +void +cv_init_file_tree (struct acpi_table_header *table, +u8 *aml_start,u32 aml_length); + +void cv_clear_op_comments (union acpi_parse_object *op); + +struct acpi_file_node *cv_filename_exists (char *filename, +struct acpi_file_node *head); + +void cv_label_file_node (union acpi_parse_object *op); + +void +cv_capture_list_comments (struct acpi_parse_state *parser_state, +struct acpi_comment_node *list_head, +struct acpi_comment_node *list_tail); + +void cv_capture_comments_only (struct acpi_parse_state *parser_state); + +void cv_capture_comments (struct acpi_walk_state *walk_state); + +void cv_transfer_comments (union acpi_parse_object *op); + +/* +* cvdisasm +*/ +void cv_switch_files (u32 level,union acpi_parse_object *op); + +u8 cv_file_has_switched (union acpi_parse_object *op); + +void cv_close_paren_write_comment (union acpi_parse_object *op,u32 level); + +void cv_close_brace_write_comment (union acpi_parse_object *op,u32 level); + +void +cv_print_one_comment_list (struct acpi_comment_node *comment_list,u32 level); + +void +cv_print_one_comment_type (union acpi_parse_object *op, +u8 comment_type,char *end_str,u32 level); + +#endif + +#endif /* _ACCONVERT */
drivers/acpi/acpica/acglobal.h +53 -0
59 lines not on this page · raw message
drivers/acpi/acpica/aclocal.h +84 -15
130 lines not on this page · raw message
drivers/acpi/acpica/acmacros.h +35 -0
@@ -493,4 +493,39 @@#define ACPI_IS_OCTAL_DIGIT (d) (((char)(d) >= '0') && ((char)(d) <= '7')) +/* +* Macors used for the ASL-/ASL+ converter utility +*/ +#ifdef ACPI_ASL_COMPILER + +#define ASL_CV_LABEL_FILENODE (a) cv_label_file_node(a); +#define ASL_CV_CAPTURE_COMMENTS_ONLY (a) cv_capture_comments_only (a); +#define ASL_CV_CAPTURE_COMMENTS (a) cv_capture_comments (a); +#define ASL_CV_TRANSFER_COMMENTS (a) cv_transfer_comments (a); +#define ASL_CV_CLOSE_PAREN (a,b) cv_close_paren_write_comment(a,b); +#define ASL_CV_CLOSE_BRACE (a,b) cv_close_brace_write_comment(a,b); +#define ASL_CV_SWITCH_FILES (a,b) cv_switch_files(a,b); +#define ASL_CV_CLEAR_OP_COMMENTS (a) cv_clear_op_comments(a); +#define ASL_CV_PRINT_ONE_COMMENT (a,b,c,d) cv_print_one_comment_type (a,b,c,d); +#define ASL_CV_PRINT_ONE_COMMENT_LIST (a,b) cv_print_one_comment_list (a,b); +#define ASL_CV_FILE_HAS_SWITCHED (a) cv_file_has_switched(a) +#define ASL_CV_INIT_FILETREE (a,b,c) cv_init_file_tree(a,b,c); + +#else + +#define ASL_CV_LABEL_FILENODE (a) +#define ASL_CV_CAPTURE_COMMENTS_ONLY (a) +#define ASL_CV_CAPTURE_COMMENTS (a) +#define ASL_CV_TRANSFER_COMMENTS (a) +#define ASL_CV_CLOSE_PAREN (a,b) acpi_os_printf (")"); +#define ASL_CV_CLOSE_BRACE (a,b) acpi_os_printf ("}"); +#define ASL_CV_SWITCH_FILES (a,b) +#define ASL_CV_CLEAR_OP_COMMENTS (a) +#define ASL_CV_PRINT_ONE_COMMENT (a,b,c,d) +#define ASL_CV_PRINT_ONE_COMMENT_LIST (a,b) +#define ASL_CV_FILE_HAS_SWITCHED (a) 0 +#define ASL_CV_INIT_FILETREE (a,b,c) + +#endif +#endif /* ACMACROS_H */
drivers/acpi/acpica/acopcode.h +2 -0
@@ -90,6 +90,7 @@#define ARGP_BUFFER_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_BYTELIST)#define ARGP_BYTE_OP ARGP_LIST1 (ARGP_BYTEDATA)#define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING) +#define ARGP_COMMENT_OP ARGP_LIST2 (ARGP_BYTEDATA, ARGP_COMMENT)#define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)#define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET)#define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SIMPLENAME, ARGP_TARGET)
@@ -223,6 +224,7 @@#define ARGI_BUFFER_OP ARGI_LIST1 (ARGI_INTEGER)#define ARGI_BYTE_OP ARGI_INVALID_OPCODE#define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE +#define ARGI_COMMENT_OP ARGI_INVALID_OPCODE#define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_ANYTYPE, ARGI_ANYTYPE, ARGI_TARGETREF)#define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF)#define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF)
drivers/acpi/acpica/amlcode.h +3 -1
@@ -137,7 +137,8 @@#define AML_NOOP_OP (u16) 0xa3#define AML_RETURN_OP (u16) 0xa4#define AML_BREAK_OP (u16) 0xa5 -#define AML_BREAKPOINT_OP (u16) 0xcc +#define AML_COMMENT_OP (u16) 0xa9 +#define AML_BREAKPOINT_OP (u16) 0xcc#define AML_ONES_OP (u16) 0xff/*
@@ -236,6 +237,7 @@#define ARGP_SIMPLENAME 0x12/* name_string | local_term | arg_term */ #define ARGP_NAME_OR_REF 0x13/* For object_type only */ #define ARGP_MAX 0x13 +#define ARGP_COMMENT 0x14/* * Resolved argument types for the AML Interpreter
drivers/acpi/acpica/psargs.c +23 -0
@@ -47,6 +47,7 @@#include "amlcode.h" #include "acnamesp.h" #include "acdispat.h" +#include "acconvert.h" #define _COMPONENT ACPI_PARSERACPI_MODULE_NAME ("psargs" )
@@ -502,6 +503,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_stateACPI_FUNCTION_TRACE (ps_get_next_field); +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state); aml = parser_state->aml;/* Determine field type */
@@ -546,6 +548,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state/* Decode the field type */ +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state);switch (opcode) {case AML_INT_NAMEDFIELD_OP :
@@ -555,6 +558,22 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_stateacpi_ps_set_name (field, name); parser_state->aml +=ACPI_NAME_SIZE ; +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state); + +#ifdef ACPI_ASL_COMPILER +/* +* Because the package length isn't represented as a parse tree object, +* take comments surrounding this and add to the previously created +* parse node. +*/ +if (field->common.inline_comment) { + field->common.name_comment = + field->common.inline_comment; + } + field->common.inline_comment = acpi_gbl_current_inline_comment; + acpi_gbl_current_inline_comment =NULL ; +#endif +/* Get the length which is encoded as a package length */ field->common.value.size =
@@ -609,11 +628,13 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_stateif (ACPI_GET8 (parser_state->aml) ==AML_BUFFER_OP ) { parser_state->aml++; +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state); pkg_end = parser_state->aml; pkg_length =acpi_ps_get_next_package_length (parser_state); pkg_end += pkg_length; +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state);if (parser_state->aml < pkg_end) {/* Non-empty list */
@@ -630,6 +651,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state opcode =ACPI_GET8 (parser_state->aml); parser_state->aml++; +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state);switch (opcode) {case AML_BYTE_OP :/* AML_BYTEDATA_ARG */
@@ -660,6 +682,7 @@ static union acpi_parse_object *acpi_ps_get_next_field(struct acpi_parse_state/* Fill in bytelist data */ +ASL_CV_CAPTURE_COMMENTS_ONLY (parser_state); arg->named.value.size = buffer_length; arg->named.data = parser_state->aml; }
drivers/acpi/acpica/psloop.c +32 -0
@@ -55,6 +55,7 @@#include "acparser.h" #include "acdispat.h" #include "amlcode.h" +#include "acconvert.h" #define _COMPONENT ACPI_PARSERACPI_MODULE_NAME ("psloop" )
@@ -132,6 +133,21 @@ acpi_ps_get_arguments(struct acpi_walk_state *walk_state, !walk_state->arg_count) { walk_state->aml = walk_state->parser_state.aml; +switch (op->common.aml_opcode) { +case AML_METHOD_OP : +case AML_BUFFER_OP : +case AML_PACKAGE_OP : +case AML_VARIABLE_PACKAGE_OP : +case AML_WHILE_OP : + +break ; + +default : + +ASL_CV_CAPTURE_COMMENTS (walk_state); +break ; + } + status = acpi_ps_get_next_arg(walk_state, &(walk_state->parser_state),
@@ -480,6 +496,8 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state)/* Iterative parsing loop, while there is more AML to process: */ while ((parser_state->aml < parser_state->aml_end) || (op)) { +ASL_CV_CAPTURE_COMMENTS (walk_state); + aml_op_start = parser_state->aml;if (!op) { status =
@@ -516,6 +534,20 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state)*/ walk_state->arg_count =0 ; +switch (op->common.aml_opcode) { +case AML_BYTE_OP : +case AML_WORD_OP : +case AML_DWORD_OP : +case AML_QWORD_OP : + +break ; + +default : + +ASL_CV_CAPTURE_COMMENTS (walk_state); +break ; + } +/* Are there any arguments that must be processed? */ if (walk_state->arg_types) {
drivers/acpi/acpica/psobject.c +38 -0
@@ -45,6 +45,7 @@#include "accommon.h" #include "acparser.h" #include "amlcode.h" +#include "acconvert.h" #define _COMPONENT ACPI_PARSERACPI_MODULE_NAME ("psobject" )
@@ -190,6 +191,7 @@ acpi_ps_build_named_op(struct acpi_walk_state *walk_state,*/ while (GET_CURRENT_ARG_TYPE (walk_state->arg_types) && (GET_CURRENT_ARG_TYPE (walk_state->arg_types) !=ARGP_NAME )) { +ASL_CV_CAPTURE_COMMENTS (walk_state); status = acpi_ps_get_next_arg(walk_state, &(walk_state->parser_state),
@@ -203,6 +205,18 @@ acpi_ps_build_named_op(struct acpi_walk_state *walk_state,INCREMENT_ARG_LIST (walk_state->arg_types); } +/* are there any inline comments associated with the name_seg?? If so, save this. */ + +ASL_CV_CAPTURE_COMMENTS (walk_state); + +#ifdef ACPI_ASL_COMPILER +if (acpi_gbl_current_inline_comment !=NULL ) { + unnamed_op->common.name_comment = + acpi_gbl_current_inline_comment; + acpi_gbl_current_inline_comment =NULL ; + } +#endif +/* * Make sure that we found a NAME and didn't run out of arguments */
@@ -243,6 +257,30 @@ acpi_ps_build_named_op(struct acpi_walk_state *walk_state,acpi_ps_append_arg (*op, unnamed_op->common.value.arg); +#ifdef ACPI_ASL_COMPILER + +/* save any comments that might be associated with unnamed_op. */ + + (*op)->common.inline_comment = unnamed_op->common.inline_comment; + (*op)->common.end_node_comment = unnamed_op->common.end_node_comment; + (*op)->common.close_brace_comment = + unnamed_op->common.close_brace_comment; + (*op)->common.name_comment = unnamed_op->common.name_comment; + (*op)->common.comment_list = unnamed_op->common.comment_list; + (*op)->common.end_blk_comment = unnamed_op->common.end_blk_comment; + (*op)->common.cv_filename = unnamed_op->common.cv_filename; + (*op)->common.cv_parent_filename = + unnamed_op->common.cv_parent_filename; + (*op)->named.aml = unnamed_op->common.aml; + + unnamed_op->common.inline_comment =NULL ; + unnamed_op->common.end_node_comment =NULL ; + unnamed_op->common.close_brace_comment =NULL ; + unnamed_op->common.name_comment =NULL ; + unnamed_op->common.comment_list =NULL ; + unnamed_op->common.end_blk_comment =NULL ; +#endif +if ((*op)->common.aml_opcode ==AML_REGION_OP || (*op)->common.aml_opcode ==AML_DATA_REGION_OP ) {/*
drivers/acpi/acpica/psopcode.c +4 -1
@@ -652,7 +652,10 @@ const struct acpi_opcode_info acpi_gbl_aml_op_info[AML_NUM_OPCODES] = {/* 81 */ ACPI_OP ("External" ,ARGP_EXTERNAL_OP ,ARGI_EXTERNAL_OP ,ACPI_TYPE_ANY ,AML_CLASS_EXECUTE ,/* ? */ -AML_TYPE_EXEC_3A_0T_0R ,AML_FLAGS_EXEC_3A_0T_0R ) +AML_TYPE_EXEC_3A_0T_0R ,AML_FLAGS_EXEC_3A_0T_0R ), +/* 82 */ ACPI_OP ("Comment" ,ARGP_COMMENT_OP ,ARGI_COMMENT_OP , +ACPI_TYPE_STRING ,AML_CLASS_ARGUMENT , +AML_TYPE_LITERAL ,AML_CONSTANT ) /*! [End] no source code translation !*/ };
drivers/acpi/acpica/psopinfo.c +1 -1
@@ -226,7 +226,7 @@ const u8 acpi_gbl_short_op_index[256] = {/* 0x90 */ 0x38 ,0x39 ,0x3a ,0x3b ,0x3c ,0x3d ,0x73 ,0x74 ,/* 0x98 */ 0x75 ,0x76 , _UNK, _UNK,0x77 ,0x78 ,0x79 ,0x7A ,/* 0xA0 */ 0x3e ,0x3f ,0x40 ,0x41 ,0x42 ,0x43 ,0x60 ,0x61 , -/* 0xA8 */ 0x62 , _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, +/* 0xA8 */ 0x62 ,0x82 , _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,/* 0xB0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,/* 0xB8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0xC0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK,
drivers/acpi/acpica/pstree.c +7 -0
@@ -45,6 +45,7 @@#include "accommon.h" #include "acparser.h" #include "amlcode.h" +#include "acconvert.h" #define _COMPONENT ACPI_PARSERACPI_MODULE_NAME ("pstree" )
@@ -216,6 +217,7 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, next =acpi_ps_get_arg (op,0 );if (next) { +ASL_CV_LABEL_FILENODE (next);return (next); }
@@ -223,6 +225,7 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, next = op->common.next;if (next) { +ASL_CV_LABEL_FILENODE (next);return (next); }
@@ -233,6 +236,8 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin,while (parent) { arg =acpi_ps_get_arg (parent,0 );while (arg && (arg != origin) && (arg != op)) { + +ASL_CV_LABEL_FILENODE (arg); arg = arg->common.next; }
@@ -247,6 +252,7 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin,/* Found sibling of parent */ +ASL_CV_LABEL_FILENODE (parent->common.next);return (parent->common.next); }
@@ -254,6 +260,7 @@ union acpi_parse_object *acpi_ps_get_depth_next(union acpi_parse_object *origin, parent = parent->common.parent; } +ASL_CV_LABEL_FILENODE (next);return (next); }
drivers/acpi/acpica/psutils.c +11 -0
@@ -45,6 +45,7 @@#include "accommon.h" #include "acparser.h" #include "amlcode.h" +#include "acconvert.h" #define _COMPONENT ACPI_PARSERACPI_MODULE_NAME ("psutils" )
@@ -152,6 +153,15 @@ union acpi_parse_object *acpi_ps_alloc_op(u16 opcode, u8 *aml)acpi_ps_init_op (op, opcode); op->common.aml = aml; op->common.flags = flags; +ASL_CV_CLEAR_OP_COMMENTS (op); + +if (opcode ==AML_SCOPE_OP ) { + acpi_gbl_current_scope = op; + } + } + +if (gbl_capture_comments) { +ASL_CV_TRANSFER_COMMENTS (op); }return (op);
@@ -174,6 +184,7 @@ void acpi_ps_free_op(union acpi_parse_object *op) {ACPI_FUNCTION_NAME (ps_free_op); +ASL_CV_CLEAR_OP_COMMENTS (op);if (op->common.aml_opcode ==AML_INT_RETURN_VALUE_OP ) {ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS ,"Free retval op: %p\n" , op));
drivers/acpi/acpica/utalloc.c +50 -0
62 lines not on this page · raw message
drivers/acpi/acpica/utdebug.c +1 -0
@@ -627,4 +627,5 @@ acpi_trace_point(acpi_trace_event_type type, u8 begin, u8 *aml, char *pathname) } ACPI_EXPORT_SYMBOL(acpi_trace_point) +#endif
include/acpi/acconfig.h +1 -0
@@ -78,6 +78,7 @@#define ACPI_MAX_EXTPARSE_CACHE_DEPTH 96/* Parse tree objects */ #define ACPI_MAX_OBJECT_CACHE_DEPTH 96/* Interpreter operand objects */ #define ACPI_MAX_NAMESPACE_CACHE_DEPTH 96/* Namespace objects */ +#define ACPI_MAX_COMMENT_CACHE_DEPTH 96/* Comments for the -ca option */ /* * Should the subsystem abort the loading of an ACPI table if the
include/acpi/actbl2.h +1 -0
@@ -87,6 +87,7 @@#define ACPI_SIG_WDAT "WDAT"/* Watchdog Action Table */ #define ACPI_SIG_WDDT "WDDT"/* Watchdog Timer Description Table */ #define ACPI_SIG_WDRT "WDRT"/* Watchdog Resource Table */ +#define ACPI_SIG_XXXX "XXXX"/* Intermediate AML header for ASL/ASL+ converter */ #ifdef ACPI_UNDEFINED_TABLES /*
Signature · 1 line
2.7.4