[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v3 1/1] libacpi/Makefile: clear ASL warning about PCI0



iasl complains _HID and _ADR cannot be used at the same time:

```
iasl -vs -p tools/firmware/hvmloader/dsdt_anycpu.tmp -tc 
tools/firmware/hvmloader/dsdt_anycpu.asl 2>&1 | grep -B1 HID

tools/firmware/hvmloader/dsdt_anycpu.asl     40:        Device (PCI0)
Warning  3073 -                                    Multiple types ^  (Device 
object requires either a _HID or _ADR, but not both)
```

The usage of both _HID and _ADR has changed [1,2]:

>From ACPI 2.0 (Jul. 27, 2000; Section 6.1, page 146):

"A device object must contain either an _HID object or an _ADR object,
but can contain both." [3]

To ACPI 6.0 (April 2015; Section 6.1, page 278),

"A device object must contain either an _HID object or an _ADR object,
but should not contain both." [4]

And from ACPI 6.0 to ACPI 6.5 (Aug. 2022):

"A device object must contain either an _HID object or an _ADR object,
but must not contain both." [5]

Using its ID, the warning is now filtered.

```
$ iasl -vw3073 -vs -p ../firmware/hvmloader/dsdt_anycpu.tmp -tc 
../firmware/hvmloader/dsdt_anycpu.asl 2>&1 | grep HID; echo $?
1
```

iasl has one ID per warning [6]; subsequent commits will address other ASL 
warnings.

```
$ awk 'NR>533 && NR<556 {print NR ":" $0}' source/compiler/aslmethod.c
534:    case PARSEOP_DEVICE:
535:
536:        /* Check usage of _HID and _ADR objects */
537:
538:        HidExists = ApFindNameInDeviceTree (METHOD_NAME__HID, Op);
539:        AdrExists = ApFindNameInDeviceTree (METHOD_NAME__ADR, Op);
540:
541:        if (!HidExists && !AdrExists)
542:        {
543:            AslError (ASL_ERROR, ASL_MSG_MISSING_DEPENDENCY, Op,
544:                "Device object requires a _HID or _ADR");
545:        }
546:        else if (HidExists && AdrExists)
547:        {
548:            /*
549:             * According to the ACPI spec, "A device object must contain
550:             * either an _HID object or an _ADR object, but should not 
contain
551:             * both".
552:             */
553:            AslError (ASL_WARNING, ASL_MSG_MULTIPLE_TYPES, Op,
554:                "Device object requires either a _HID or _ADR, but not 
both");
555:        }

$ awk 'NR>188 && NR<206 || NR==432 || /ASL_MSG_MULTIPLE_TYPES/ {print NR ":" 
$0}' source/compiler/aslmessages.h
189:/*
190: * Values (message IDs) for all compiler messages. There are currently
191: * three distinct blocks of error messages (so that they can be expanded
192: * individually):
193: *      Main ASL compiler
194: *      Data Table compiler
195: *      Preprocessor
196: *
197: * NOTE1: This list must match the tables of message strings in the file
198: * aslmessages.c exactly.
199: *
200: * NOTE2: With the introduction of the -vw option to disable specific
201: * messages, new messages should only be added to the end of these
202: * lists, so that values for existing messages are not disturbed.
203: */
204:typedef enum
205:{
280:    ASL_MSG_MULTIPLE_TYPES,
432:} ASL_MESSAGE_IDS;

$ git remote -v
origin  git@xxxxxxxxxx:acpica/acpica.git (fetch)
origin  git@xxxxxxxxxx:acpica/acpica.git (push)

$ git log --pretty='%h ("%s")' -n1
7dae72155 ("Logfile: Changes for version 20241212")
```

[1] https://uefi.org/acpi/specs
[2] https://uefi.org/specifications
[3] https://uefi.org/sites/default/files/resources/ACPI_2.pdf
[4] https://uefi.org/sites/default/files/resources/ACPI_6.0.pdf
[5] 
https://uefi.org/specs/ACPI/6.5/06_Device_Configuration.html?highlight=_hid#device-identification-objects
[6] https://github.com/acpica/acpica

Fixes: 5a8b28bfd4 ("tools/libacpi: cleanup Makefile, don't check for iasl 
binary")
Signed-off-by: Ariel Otilibili <Ariel.Otilibili-Anieli@xxxxxxxxxx>
---
Cc: Jan Beulich <jbeulich@xxxxxxxx>
Cc: Anthony PERARD <anthony.perard@xxxxxxxxxx>
---
 tools/libacpi/Makefile | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/tools/libacpi/Makefile b/tools/libacpi/Makefile
index b21a64c6b4..4668ecb365 100644
--- a/tools/libacpi/Makefile
+++ b/tools/libacpi/Makefile
@@ -21,6 +21,8 @@ H_SRC += $(addprefix $(ACPI_BUILD_DIR)/, ssdt_tpm.h 
ssdt_tpm2.h ssdt_laptop_slat
 MKDSDT_CFLAGS-$(CONFIG_ARM_64) = -DCONFIG_ARM_64
 MKDSDT_CFLAGS-$(CONFIG_X86) = -DCONFIG_X86
 
+IASL_WARNS=3073
+
 # Suffix for temporary files.
 #
 # We will also use this suffix to workaround a bug in older iasl
@@ -32,7 +34,7 @@ TMP_SUFFIX    = tmp
 all: $(C_SRC) $(H_SRC)
 
 $(H_SRC): $(ACPI_BUILD_DIR)/%.h: %.asl
-       $(IASL) -vs -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) -tc $<
+       $(IASL) $(IASL_WARNS:%=-vw%) -vs -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) 
-tc $<
        sed -e 's/AmlCode/$*/g' -e 's/_aml_code//g' $(ACPI_BUILD_DIR)/$*.hex >$@
        rm -f $(addprefix $(ACPI_BUILD_DIR)/, $*.aml $*.hex)
  
@@ -65,7 +67,7 @@ $(ACPI_BUILD_DIR)/dsdt_anycpu_arm.asl: $(MK_DSDT)
        mv -f $@.$(TMP_SUFFIX) $@
 
 $(C_SRC): $(ACPI_BUILD_DIR)/%.c: $(ACPI_BUILD_DIR)/%.asl
-       $(IASL) -vs -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) -tc $<
+       $(IASL) $(IASL_WARNS:%=-vw%) -vs -p $(ACPI_BUILD_DIR)/$*.$(TMP_SUFFIX) 
-tc $<
        sed -e 's/AmlCode/$*/g' -e 's/_aml_code//g' $(ACPI_BUILD_DIR)/$*.hex > 
$@.$(TMP_SUFFIX)
        echo "int $*_len=sizeof($*);" >> $@.$(TMP_SUFFIX)
        mv -f $@.$(TMP_SUFFIX) $@
-- 
2.47.1




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.