diff -Nru fwts-21.05.00/auto-packager/mkpackage.sh fwts-21.06.00/auto-packager/mkpackage.sh --- fwts-21.05.00/auto-packager/mkpackage.sh 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/auto-packager/mkpackage.sh 2021-06-21 05:43:14.000000000 +0000 @@ -23,7 +23,7 @@ # Get fwts sources, strip out .git directory, add in necessary debian packaging # files, build source package ready for upload. # -RELEASES="xenial bionic focal groovy hirsute impish" +RELEASES="bionic focal groovy hirsute impish" REPO=git://kernel.ubuntu.com/hwe/fwts.git RELEASE_TAR_URL=http://fwts.ubuntu.com/release FWTS=fwts diff -Nru fwts-21.05.00/data/klog.json fwts-21.06.00/data/klog.json --- fwts-21.05.00/data/klog.json 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/data/klog.json 2021-06-21 05:43:14.000000000 +0000 @@ -1766,6 +1766,13 @@ "label": "KlogAcpiApicStopsInC2" }, { + "compare_mode": "regex", + "log_level": "LOG_LEVEL_CRITICAL", + "pattern": "Failed to request resources for .* on irqchip", + "advice": "BIOS may not set up a specific pin or a GPIO to be an IRQ. This can cause a device, such as a touchscreen, that depends on this IRQ to fail.", + "label": "KlogBiosIrqRequestFailed" + }, + { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Disabling IRQ", diff -Nru fwts-21.05.00/debian/changelog fwts-21.06.00/debian/changelog --- fwts-21.05.00/debian/changelog 2021-05-20 08:31:29.000000000 +0000 +++ fwts-21.06.00/debian/changelog 2021-06-21 05:42:45.000000000 +0000 @@ -1,3 +1,51 @@ +fwts (21.06.00-0ubuntu1~g) groovy; urgency=medium + + [Alex Hung] + * fwts_test: arg-json-0001: use current klog.json, not a copy + * lib: fwts_acpi_tables: constify read-only function arguments + * fwts_framework: clean up flag macros + * acpi: pptt: constify read-only function arguments + * acpi: wdat: enable printing fields + * fwts-test: sync up with wdat changes + * acpi: wrap long funtion definitions + * acpi/fwts-test: fix typo (depreciated->deprecated) + * sbbr: add checks for mandatory tables + * sbbr: update recommended tables + * acpi: remove SBBR mandatory tests in various tables + * acpi: sbbr: add mcfg and pptt to --sbbr option + * live-image: remove unnecessary -skip-test=s3,s4 argument + * live-image: create a separate menu for arm64/aarch64 + * dmicheck: add type 42 to SBBR requirement + * klog.json: check IRQ requests on irqchip + * tpmevlog: add to batch tests + * live-image: add utils tests to "Selected" menu + * live-image: add "TPM tests" to root menu + * auto-packager: mkpackage.sh: remove xenial + + [Colin Ian King] + * Makefile.am: remove all traces of $srcdir and $top_srcdir in Makefile.am + (LP: #1929138) + * ACPICA: Update to version 20210604 + * fwts-test: sync test logs with latest ACPICA + * snapcraft.yaml: add architectures info to make remote snap builds easier + * Debian: remove spaces at end of lines of changelong + * Debian: remove spaces at end of lines of control file + * debian/copyright: use secure https url specifier + * Debian: add project Homepage field to control file + * Debian: add Rules-Requires-Root field to control file + * Debian: update compat level to 9 + * Debian: control: update Standards-Version to 4.1.0 + * Add lintian overrides for ldconfig trigger warning + * Debian: move source lintian overrides file to source + * Remove complex disabling of ACPI for non-ACPI targets + * fwts_acpi_tables: memcpy 4 char ACPI table name + + [Ivan Hu] + * uefirttime: set test time for the settime and setwakeuptime tests + (LP: #1929509) + + -- Alex Hung Sun, 20 Jun 2021 23:42:45 -0600 + fwts (21.05.00-0ubuntu1~g) groovy; urgency=medium [Alex Hung] @@ -1550,7 +1598,7 @@ [ppaidipe@linux.vnet.ibm.com] * fwts/opal: Power management DT Validation tests. - * fwts/opal: Reserved memory DT validation tests. + * fwts/opal: Reserved memory DT validation tests. -- Ivan Hu Wed, 24 May 2017 11:26:39 +0800 @@ -1589,7 +1637,7 @@ [Supreeth Venkatesh] * sbbr: Add "--sbbr" flag to support running SBBR Tests. - + -- Ivan Hu Thu, 16 Mar 2017 11:20:20 +0800 fwts (17.02.00-0ubuntu1) zesty; urgency=low @@ -1802,7 +1850,7 @@ [Jeffrey Hugo] * acpi: fadt: Remove HEADLESS check on reduced hardware * pci: aspm: Add segment support - + -- Alex Hung Fri, 09 Sep 2016 09:47:45 +0800 fwts (16.08.01-0ubuntu1) yakkety; urgency=low @@ -1810,7 +1858,7 @@ [Colin Ian King] * acpica: rename vsnprintf and sprintf in utprint.c to avoid name clash conflicts - + -- Alex Hung Thu, 18 Aug 2016 17:46:32 +0800 fwts (16.08.00-0ubuntu1) yakkety; urgency=low @@ -1985,7 +2033,7 @@ [Jeffrey Hugo] * lib: acpi: Add support for HEST GHESv2 * acpi: hest: Add GHESv2 checking (LP: #1587624) - + -- Ivan Hu Wed, 22 Jun 2016 15:43:04 +0800 fwts (16.05.01-0ubuntu1) yakkety; urgency=low @@ -2641,7 +2689,7 @@ -- Alex Hung Wed, 03 Jun 2015 16:37:55 +0800 fwts (15.03.01-0ubuntu1) vivid; urgency=low - + [Colin Ian King] * efi_runtime: ensure we don't allocate a zero byte buffer (LP: #1429890)] @@ -2689,7 +2737,7 @@ * efi_runtime: get_nextvariable: copy only the needed name bytes * uefirtvariable: allow large sizes for variable names * efi_runtime: handle memory errors when setting variables - + -- Ivan Hu Fri, 06 Mar 2015 11:01:50 +0800 fwts (15.01.00-0ubuntu0) vivid; urgency=low @@ -2786,7 +2834,7 @@ [Phidias Chiang] * README: Fix missing libglib2.0-dev dependency in README - + -- Alex Hung Wed, 17 Dec 2014 15:57:35 +0800 fwts (14.11.00-0ubuntu1) vivid; urgency=low @@ -2913,7 +2961,7 @@ -- Keng-Yu Lin Wed, 24 Sep 2014 15:41:17 +0800 fwts (14.08.00-0ubuntu0) utopic; urgency=low - + [Alberto Milone] * Make the --pm-method argument part of fwts_framework * Store all the pm_method related functions in fwts_pm_method.c @@ -2938,18 +2986,18 @@ * ACPI: Add new ACPI 5.1 FADT fields and update acpidump (LP: #1348598) * fwts-test: update ACPI table related tests due to ACPI 5.1 fwts changes * ACPI: Fix up GTDT corrections as in ACPI 5.1 (LP: #1348618) - * lib + tests: re-work iASL backand and API to handle externals + * lib + tests: re-work iASL backand and API to handle externals (LP: #1317390) * Update contributors in man page * lib: don't use #pragma GCC push and pop [Ivan Hu] - * uefirtvariable: setvariable without deleting the original variable + * uefirtvariable: setvariable without deleting the original variable (LP: #1354301) * uefi: add the variable attribute definition for append write (LP: #1356194) - * lib: uefi: add the status error report for the IP addr conflict + * lib: uefi: add the status error report for the IP addr conflict (LP: #1356195) - * uefirtvariable: skip test when specific attributes not supported + * uefirtvariable: skip test when specific attributes not supported (LP: #1356199) * uefirtvariable: add test for setvariable with both authenticated attributes are set (LP: #1356207) @@ -3271,7 +3319,7 @@ device path type for uefidump (LP: #1260147) * uefi: uefidump: extend the Messaging Device Path type Vedor subtype-10 (LP: #1262095) - + -- Alex Hung Tue, 14 Jan 2014 16:13:37 +0800 @@ -3394,7 +3442,7 @@ -- Keng-Yu Lin Fri, 15 Nov 2013 14:11:00 +0800 fwts (13.09.01-0ubuntu1) saucy; urgency=low - + [Alex Hung] * live-image/fwts-frontend-text: add uefi tests to fwts-live (LP: #1223793) @@ -3426,7 +3474,7 @@ -- Keng-Yu Lin Tue, 10 Sep 2013 17:33:17 +0800 fwts (13.08.00-0ubuntu1) saucy; urgency=low - + [Alex Hung] * dmi: dmi_decode: merge smbios test as they both check dmi/smbios * dmi: rename dmi_decode test to dmicheck @@ -3452,7 +3500,7 @@ * acpi: syntaxcheck: fix spelling mistake (LP: #1200602) * fwts_iasl_interface.c: ensure we read in all of stdout (LP: #1200426) * data: klog.json: rename "Common" label prefix to "Klog", (LP: #1201311) - * data: klog.json: Update patterns to keep in sync with Linux 3.10 + * data: klog.json: Update patterns to keep in sync with Linux 3.10 (LP: #1201335) * bios: hdaaudio: skip the test if no BIOS pin config found (LP: #1201903) * pci: aspm: test should skip if it can't read FACP or PCIe config @@ -4363,7 +4411,7 @@ fwts (0.25.01) precise; urgency=low [Keng-Yu Lin] - * wmi: Fix an error on processing the _WDG data + * wmi: Fix an error on processing the _WDG data -- Keng-Yu Lin Thu, 26 Apr 2012 10:30:35 +0800 @@ -4421,7 +4469,7 @@ [Colin Ian King] * uefi: uefidump: handle realloc failure - * lib: fwts_pipeio: handle realloc failure + * lib: fwts_pipeio: handle realloc failure * lib: fwts_args: handle realloc failure * lib: acpid: handle realloc failures in fwts_acpi_event_read() * lib: fwts_acpi_tables: handle fwts_low_realloc() failures @@ -4482,7 +4530,7 @@ [Colin Ian King] * cpu: msr: GPF avoidance on BOCHs QEMU systems (LP: #925001) - + -- Keng-Yu Lin Thu, 09 Feb 2012 13:52:50 +0800 fwts (0.24.18) precise; urgency=low @@ -4491,7 +4539,7 @@ * cpu:msr: fixed errors for checking SMRR MSR registers [Keng-Yu Lin] - * Fix a typo error of "DSTD" + * Fix a typo error of "DSTD" -- Keng-Yu Lin Mon, 06 Feb 2012 16:39:43 +0800 @@ -4530,7 +4578,7 @@ fwts (0.24.15) precise; urgency=low * lib: fwts_acpi_find_rsdp_bios should only scan for RSDP on Intel/AMD - * cpu: msr: disabled test for non-Intel/AMD architectures + * cpu: msr: disabled test for non-Intel/AMD architectures -- Keng-Yu Lin Mon, 09 Jan 2012 10:17:46 +0100 @@ -4695,14 +4743,14 @@ * add fwts-collect man page * debian: add fwts-collect to fwts installer * scripts: fwts-collect - collect up logs for bug reporting - + -- Colin King Tue, 20 Sep 2011 18:28:46 +0100 fwts (0.24.00) oneiric; urgency=low * iso-image: fwts_wrapper dialog wrapper script. * assets: fwts logo - + -- Colin King Tue, 20 Sep 2011 18:16:00 +0100 fwts (0.23.23) oneiric; urgency=low @@ -5185,7 +5233,7 @@ fwts (0.21.06) natty; urgency=low - * Add hwinfo device checking for s3 and s4 tests + * Add hwinfo device checking for s3 and s4 tests * Update man page * New upstream version 0.21.06 @@ -5254,7 +5302,7 @@ * lib: framework: use list head macro. * lib: list: include list head and tail macros * hpet: hpet_check: use list iterator (for klog scanning). - * bios: mtrr: minor rewrite to stop scoping of item confusion when + * bios: mtrr: minor rewrite to stop scoping of item confusion when doing mtrr_bios_list scanning * bios: mtrr: use list iterator * New upstream version 0.20.19 @@ -5413,14 +5461,14 @@ -- Colin King Fri, 3 Dec 2010 11:09:49 +0000 fwts (0.20.00) natty; urgency=low - + * Add -u, --utils option * New upstream version 0.20.00 -- Colin King Wed, 1 Dec 2010 16:27:37 +0000 fwts (0.19.29) maverick; urgency=low - + * Fix 64 bit build warnings * Add more advice into method test * New upstream version 0.19.29 @@ -5428,7 +5476,7 @@ -- Colin King Mon, 30 Nov 2010 14:26:23 +0000 fwts (0.19.28) maverick; urgency=low - + * Add in acpitable MADT checks for APICs * dump out global_irq_base from MADT IO APIC correctly * New upstream version 0.19.28 @@ -5436,7 +5484,7 @@ -- Colin King Fri, 26 Nov 2010 18:43:01 +0000 fwts (0.19.27) maverick; urgency=low - + * Fix GCC warnings now that we're checking log printf() args * Add infinite loop checking in AML method execution * New upstream version 0.19.27 @@ -5444,35 +5492,35 @@ -- Colin King Fri, 26 Nov 2010 11:26:47 +0000 fwts (0.19.26) maverick; urgency=low - + * Add more ACPI method tests * New upstream version 0.19.26 -- Colin King Tue, 23 Nov 2010 15:41:34 +0000 fwts (0.19.25) maverick; urgency=low - + * Add in ACPICA core + ACPI method tests * New upstream version 0.19.25 -- Colin King Tue, 23 Nov 2010 10:02:10 +0000 fwts (0.19.24) maverick; urgency=low - + * Minor changes in help text and better CMOS error detection. * New upstream version 0.19.24 -- Colin King Sun, 21 Nov 2010 12:22:21 +0000 fwts (0.19.23) maverick; urgency=low - + * More intelligent advice for FADT pointer mismatches to FACS * New upstream version 0.19.23 -- Colin King Fri, 19 Nov 2010 18:36:56 +0000 fwts (0.19.22) maverick; urgency=low - + * Add \_SB_._OSC buffer overflow checking * Add more graceful ACPI table load failure error handling * New upstream version 0.19.22 @@ -5480,482 +5528,481 @@ -- Colin King Thu, 18 Nov 2010 13:48:03 +0000 fwts (0.19.21) maverick; urgency=low - + * Fix wmi and hpet test breakage * New upstream version 0.19.21 -- Colin King Mon, 15 Nov 2010 17:39:34 +0000 fwts (0.19.20) maverick; urgency=low - + * Add acpitable test * New upstream version 0.19.20 -- Colin King Mon, 15 Nov 2010 13:22:23 +0000 fwts (0.19.19) maverick; urgency=low - + * Add acpitable test * New upstream version 0.19.19 -- Colin King Fri, 12 Nov 2010 15:33:17 +0000 fwts (0.19.18) maverick; urgency=low - - * Update makefile + + * Update makefile * New upstream version 0.19.18 -- Colin King Thu, 11 Nov 2010 15:37:53 +0000 fwts (0.19.17) maverick; urgency=low - + * klog data now in json formatted datafile * New upstream version 0.19.17 -- Colin King Thu, 11 Nov 2010 14:59:02 +0000 fwts (0.19.16) maverick; urgency=low - + * New upstream version 0.19.16 -- Colin King Wed, 10 Nov 2010 16:24:27 +0000 fwts (0.19.15) maverick; urgency=low - + * New upstream version 0.19.15 -- Colin King Wed, 10 Nov 2010 09:15:02 +0100 fwts (0.19.14) maverick; urgency=low - + * New upstream version 0.19.14 -- Colin King Tue, 9 Nov 2010 15:59:32 +0100 fwts (0.19.13) maverick; urgency=low - + * New upstream version 0.19.13 -- Colin King Sat, 6 Nov 2010 15:35:10 +0100 fwts (0.19.12) maverick; urgency=low - + * New upstream version 0.19.12 -- Colin King Fri, 5 Nov 2010 15:33:23 +0100 fwts (0.19.11) maverick; urgency=low - + * New upstream version 0.19.11 -- Colin King Mon, 1 Nov 2010 17:37:52 +0100 fwts (0.19.10) maverick; urgency=low - + * New upstream version 0.19.10 -- Colin King Mon, 1 Nov 2010 16:47:21 +0100 fwts (0.19.09) maverick; urgency=low - + * New upstream version 0.19.09 -- Colin King Sat, 30 Oct 2010 13:30:13 +0100 fwts (0.19.08) maverick; urgency=low - + * New upstream version 0.19.08 -- Colin King Sat, 30 Oct 2010 11:51:10 +0100 fwts (0.19.07) maverick; urgency=low - + * New upstream version 0.19.07 -- Colin King Thu, 28 Oct 2010 10:43:00 +0100 fwts (0.19.06) maverick; urgency=low - + * New upstream version 0.19.06 -- Colin King Mon, 18 Oct 2010 12:24:02 +0100 fwts (0.19.05) maverick; urgency=low - + * New upstream version 0.19.05 -- Colin King Mon, 11 Oct 2010 14:31:10 +0100 fwts (0.19.04) maverick; urgency=low - + * New upstream version 0.19.04 -- Colin King Wed, 6 Oct 2010 16:41:21 +0100 fwts (0.19.03) maverick; urgency=low - + * New upstream version 0.19.03 -- Colin King Wed, 6 Oct 2010 12:38:42 +0100 fwts (0.19.02) maverick; urgency=low - + * New upstream version 0.19.02 -- Colin King Tue, 5 Oct 2010 09:49:10 +0100 fwts (0.19.01) maverick; urgency=low - + * New upstream version 0.19.01 -- Colin King Mon, 4 Oct 2010 13:56:53 +0100 - + fwts (0.19.00) maverick; urgency=low - + * New upstream version 0.19.00 -- Colin King Mon, 4 Oct 2010 13:15:22 +0100 - + fwts (0.18.02) maverick; urgency=low - + * FADT test read correct ACPI table from /sys/firmware (closes: #627959) * New upstream version 0.18.02 -- Colin King Wed, 1 Sep 2010 11:11:20 +0100 - + fwts (0.18.01) maverick; urgency=low - + * New upstream version 0.18.01 - + -- Colin King Fri, 13 Aug 2010 10:04:54 +0100 - + fwts (0.18.0) maverick; urgency=low - + * New upstream version 0.18.0 - + -- Colin King Thu, 12 Aug 2010 19:09:19 +0100 - + fwts (0.17.9.1) maverick; urgency=low - + * New upstream version 0.17.9.1 - + -- Colin King Thu, 12 Aug 2010 19:01:49 +0100 - + fwts (0.17.9) maverick; urgency=low - + * New upstream version 0.17.9 - + -- Colin King Sat, 7 Aug 2010 20:17:31 +0100 - + fwts (0.17.8) maverick; urgency=low - + * New upstream version 0.17.8 - + -- Colin King Sat, 7 Aug 2010 19:08:56 +0100 - + fwts (0.17.7) maverick; urgency=low - + * New upstream version 0.17.7 - + -- Colin King Sat, 7 Aug 2010 18:59:59 +0100 - + fwts (0.17.6) maverick; urgency=low - + * New upstream version 0.17.6 - + -- Colin King Sat, 7 Aug 2010 18:14:48 +0100 - + fwts (0.17.5) maverick; urgency=low - + * New upstream version 0.17.5 - + -- Colin King Fri, 6 Aug 2010 09:14:45 +0100 - + fwts (0.17.4) maverick; urgency=low - + * New upstream version 0.17.4 - + -- Colin King Tue, 3 Aug 2010 15:36:02 +0100 - + fwts (0.17.3) maverick; urgency=low - + * New upstream version 0.17.3 - + -- Colin King Fri, 30 Jul 2010 08:54:12 +0100 - + fwts (0.17.2) maverick; urgency=low - + * New upstream version 0.17.2 - + -- Colin King Wed, 28 Jul 2010 12:20:07 +0100 - + fwts (0.17.1) maverick; urgency=low - + * New upstream version 0.17.1 - + -- Colin King Tue, 27 Jul 2010 17:57:01 +0100 - + fwts (0.17.0) maverick; urgency=low - + * New upstream version 0.17.0 - + -- Colin King Fri, 23 Jul 2010 16:32:58 +0200 - + fwts (0.16.14) maverick; urgency=low - + * New upstream version 0.16.14 - + -- Colin King Fri, 23 Jul 2010 10:56:53 +0200 - + fwts (0.16.13) maverick; urgency=low - + * New upstream version 0.16.13 - + -- Colin King Fri, 23 Jul 2010 10:40:40 +0200 - + fwts (0.16.12) maverick; urgency=low - + * New upstream version 0.16.12 - + -- Colin King Thu, 22 Jul 2010 15:49:14 +0100 - + fwts (0.16.11) maverick; urgency=low - + * New upstream version 0.16.11 - + -- Colin King Wed, 21 Jul 2010 10:54:20 +0200 - + fwts (0.16.10) maverick; urgency=low - + * New upstream version 0.16.10 - + -- Colin King Mon, 19 Jul 2010 14:11:26 +0100 - + fwts (0.16.09) maverick; urgency=low - + * New upstream version 0.16.09 - + -- Colin King Sat, 17 Jul 2010 14:55:38 +0100 - + fwts (0.16.08) maverick; urgency=low - + * New upstream version 0.16.08 - + -- Colin King Fri, 16 Jul 2010 11:22:17 +0100 - + fwts (0.16.07) maverick; urgency=low - + * New upstream version 0.16.07 - + -- Colin King Thu, 15 Jul 2010 15:25:44 +0100 - + fwts (0.16.06) maverick; urgency=low - + * New upstream version 0.16.06 - + -- Colin King Thu, 15 Jul 2010 10:07:43 +0100 - + fwts (0.16.05) maverick; urgency=low - + * New upstream version 0.16.05 - + -- Colin King Mon, 12 Jul 2010 10:22:40 +0100 - + fwts (0.16.04) maverick; urgency=low - + * New upstream version 0.16.04 - + -- Colin King Sat, 10 Jul 2010 19:22:54 +0100 - + fwts (0.16.03) maverick; urgency=low - + * New upstream version 0.16.03 - + -- Colin King Fri, 9 Jul 2010 18:41:53 +0100 - + fwts (0.16.02) maverick; urgency=low - + * New upstream version 0.16.02 - + -- Colin King Thu, 8 Jul 2010 19:29:36 +0100 - + fwts (0.16.01) maverick; urgency=low - + * New upstream version 0.16.01 - + -- Colin King Thu, 8 Jul 2010 13:59:51 +0100 - + fwts (0.16.0) maverick; urgency=low - + * New upstream version 0.16.0 - + -- Colin King Thu, 8 Jul 2010 10:49:04 +0100 - + fwts (0.15.9) maverick; urgency=low - + * New upstream version 0.15.9 - + -- Colin King Thu, 8 Jul 2010 09:25:17 +0100 - + fwts (0.15.8) maverick; urgency=low - + * New upstream version 0.15.8 - + -- Colin King Wed, 7 Jul 2010 20:00:03 +0100 - + fwts (0.15.7) maverick; urgency=low - + * New upstream version 0.15.7 - + -- Colin King Tue, 6 Jul 2010 19:50:01 +0100 - + fwts (0.15.6) maverick; urgency=low - + * New upstream version 0.15.6 - + -- Colin King Tue, 6 Jul 2010 10:13:06 +0100 - + fwts (0.15.5) maverick; urgency=low - + * New upstream version 0.15.5 - + -- Colin King Mon, 5 Jul 2010 18:23:47 +0100 - + fwts (0.15.4) maverick; urgency=low - + * New upstream version 0.15.4 - + -- Colin King Mon, 5 Jul 2010 17:05:00 +0100 - + fwts (0.15.3) maverick; urgency=low - + * New upstream version 0.15.3 - + -- Colin King Mon, 5 Jul 2010 12:22:25 +0100 - + fwts (0.15.2) maverick; urgency=low - + * New upstream version 0.15.2 - + -- Colin King Sun, 4 Jul 2010 15:33:27 +0100 - + fwts (0.15.1) maverick; urgency=low - + * New upstream version 0.15.1 - + -- Colin King Fri, 2 Jul 2010 06:15:03 +0100 - + fwts (0.15.0) maverick; urgency=low - + * New upstream version 0.15.0 - + -- Colin King Thu, 1 Jul 2010 12:45:32 +0100 - + fwts (0.14.8) maverick; urgency=low - + * New upstream version 0.14.8 - + -- Colin King Tue, 29 Jun 2010 17:55:26 +0100 - + fwts (0.14.7) maverick; urgency=low - + * New upstream version 0.14.7 - + -- Colin King Tue, 29 Jun 2010 10:59:02 +0100 - + fwts (0.14.6) maverick; urgency=low - + * New upstream version 0.14.6 - + -- Colin King Mon, 28 Jun 2010 16:49:19 +0100 - + fwts (0.14.5) maverick; urgency=low - + * New upstream version 0.14.5 - + -- Colin King Mon, 28 Jun 2010 15:54:19 +0100 - + fwts (0.14.4) maverick; urgency=low - + * New upstream version 0.14.4 - + -- Colin King Mon, 28 Jun 2010 12:52:25 +0100 - + fwts (0.14.3) maverick; urgency=low - + * New upstream version 0.14.3 - + -- Colin King Sun, 27 Jun 2010 11:52:50 +0100 - + fwts (0.14.2) maverick; urgency=low - + * New upstream version 0.14.2 - + -- Colin King Sat, 26 Jun 2010 20:09:37 +0100 - + fwts (0.14.1) maverick; urgency=low - + * New upstream version 0.14.1 - + -- Colin King Fri, 25 Jun 2010 17:11:49 +0100 - + fwts (0.14) maverick; urgency=low - + * New upstream version 0.14 - + -- Colin King Fri, 25 Jun 2010 10:40:02 +0100 - + fwts (0.13.1) maverick; urgency=low - + * New upstream version 0.13.1 - + -- Colin King Fri, 18 Jun 2010 15:26:53 +0100 - + fwts (0.13) maverick; urgency=low - + * New upstream version 0.13 - + -- Colin King Fri, 18 Jun 2010 10:48:50 +0100 - + fwts (0.12.4) maverick; urgency=low - + * New upstream version 0.12.4 - + -- Colin King Thu, 17 Jun 2010 17:55:01 +0100 - + fwts (0.12.3) maverick; urgency=low - + * New upstream version 0.12.3 - + -- Colin King Thu, 17 Jun 2010 14:09:35 +0100 - + fwts (0.12.2) maverick; urgency=low - + * New upstream version 0.12.2 - + -- Colin King Thu, 17 Jun 2010 12:18:16 +0100 - + fwts (0.12.1) maverick; urgency=low - + * New upstream version 0.12.1 - + -- Colin King Thu, 17 Jun 2010 11:40:43 +0100 - + fwts (0.12) maverick; urgency=low - + * New upstream version 0.12 - + -- Colin King Thu, 17 Jun 2010 10:01:08 +0100 - + fwts (0.11) maverick; urgency=low - + * New upstream version 0.11 - + -- Colin King Mon, 7 Jun 2010 09:04:13 +0100 - + fwts (0.1) maverick; urgency=low - + * New upstream version 0.1 - + -- Colin King Fri, 28 May 2010 11:15:26 +0100 - diff -Nru fwts-21.05.00/debian/compat fwts-21.06.00/debian/compat --- fwts-21.05.00/debian/compat 2021-05-20 08:31:29.000000000 +0000 +++ fwts-21.06.00/debian/compat 2021-06-21 05:42:45.000000000 +0000 @@ -1 +1 @@ -8 +9 diff -Nru fwts-21.05.00/debian/control fwts-21.06.00/debian/control --- fwts-21.05.00/debian/control 2021-05-20 08:31:29.000000000 +0000 +++ fwts-21.06.00/debian/control 2021-06-21 05:42:45.000000000 +0000 @@ -1,9 +1,11 @@ Source: fwts Section: devel Priority: optional +Rules-Requires-Root: no Maintainer: Firmware Testing Team Uploaders: Colin King , Alex Hung , Ivan Hu -Standards-Version: 3.9.7 +Standards-Version: 4.1.0 +Homepage: https://wiki.ubuntu.com/FirmwareTestSuite Build-Depends: debhelper (>= 9~), autoconf, automake, @@ -30,9 +32,9 @@ Suggests: dmidecode Description: FirmWare Test Suite This is a firmware test suite that performs sanity checks on system - firmware. It is intended to identify BIOS and ACPI errors and - if appropriate it will try to explain the errors and give advice to - help workaround or fix firmware bugs. It is primarily intended to + firmware. It is intended to identify BIOS and ACPI errors and + if appropriate it will try to explain the errors and give advice to + help workaround or fix firmware bugs. It is primarily intended to be a Linux-centric firmware troubleshooting tool. Package: libfwtsiasl1 @@ -41,9 +43,9 @@ ${misc:Depends} Description: FirmWare Test Suite ACPICA core built for iasl functionality The firmware test suite requires the ACPICA core engine to be built in - compiler mode (with ACPI_ASL_COMPILER enabled) to support assembly and + compiler mode (with ACPI_ASL_COMPILER enabled) to support assembly and disassembly of ACPI Machine Language (AML) in the ACPI DSDT and SSDTs. - This library contains this code with a thin fwts specific API to + This library contains this code with a thin fwts specific API to interface with fwts. Package: libfwtsacpica1 @@ -62,7 +64,7 @@ ${misc:Depends} Description: FirmWare Test Suite core support library This is the fwts core library. It contains a top level test framework - and a rich range of firmware specific testing support code for the + and a rich range of firmware specific testing support code for the various fwts tests. Package: fwts-frontend @@ -73,7 +75,7 @@ fwts Description: Firmware Test Suite frontend interface This is a dialog based interface designed to provide an easy to use method - to execute tests via Firmware Test Suite and is also used as the primary + to execute tests via Firmware Test Suite and is also used as the primary interface within Firmware Test Suite live images. Package: fwts-efi-runtime-dkms diff -Nru fwts-21.05.00/debian/copyright fwts-21.06.00/debian/copyright --- fwts-21.05.00/debian/copyright 2021-05-20 08:31:29.000000000 +0000 +++ fwts-21.06.00/debian/copyright 2021-06-21 05:42:45.000000000 +0000 @@ -1,4 +1,4 @@ -Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: fwts Source: git://kernel.ubuntu.com/hwe/fwts diff -Nru fwts-21.05.00/debian/libfwts1.install fwts-21.06.00/debian/libfwts1.install --- fwts-21.05.00/debian/libfwts1.install 2021-05-20 08:31:29.000000000 +0000 +++ fwts-21.06.00/debian/libfwts1.install 2021-06-21 05:42:45.000000000 +0000 @@ -1 +1 @@ -usr/lib/fwts/libfwts.so.* usr/lib/fwts +usr/lib/*/fwts/libfwts.so.* diff -Nru fwts-21.05.00/debian/libfwts1.lintian-overrides fwts-21.06.00/debian/libfwts1.lintian-overrides --- fwts-21.05.00/debian/libfwts1.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ fwts-21.06.00/debian/libfwts1.lintian-overrides 2021-06-21 05:42:45.000000000 +0000 @@ -0,0 +1 @@ +package-has-unnecessary-activation-of-ldconfig-trigger diff -Nru fwts-21.05.00/debian/libfwtsacpica1.install fwts-21.06.00/debian/libfwtsacpica1.install --- fwts-21.05.00/debian/libfwtsacpica1.install 2021-05-20 08:31:29.000000000 +0000 +++ fwts-21.06.00/debian/libfwtsacpica1.install 2021-06-21 05:42:45.000000000 +0000 @@ -1 +1 @@ -usr/lib/fwts/libfwtsacpica.so.* usr/lib/fwts +usr/lib/*/fwts/libfwtsacpica.so.* diff -Nru fwts-21.05.00/debian/libfwtsacpica1.lintian-overrides fwts-21.06.00/debian/libfwtsacpica1.lintian-overrides --- fwts-21.05.00/debian/libfwtsacpica1.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ fwts-21.06.00/debian/libfwtsacpica1.lintian-overrides 2021-06-21 05:42:45.000000000 +0000 @@ -0,0 +1 @@ +package-has-unnecessary-activation-of-ldconfig-trigger diff -Nru fwts-21.05.00/debian/libfwtsiasl1.install fwts-21.06.00/debian/libfwtsiasl1.install --- fwts-21.05.00/debian/libfwtsiasl1.install 2021-05-20 08:31:29.000000000 +0000 +++ fwts-21.06.00/debian/libfwtsiasl1.install 2021-06-21 05:42:45.000000000 +0000 @@ -1 +1 @@ -usr/lib/fwts/libfwtsiasl.so.* usr/lib/fwts +usr/lib/*/fwts/libfwtsiasl.so.* diff -Nru fwts-21.05.00/debian/libfwtsiasl1.lintian-overrides fwts-21.06.00/debian/libfwtsiasl1.lintian-overrides --- fwts-21.05.00/debian/libfwtsiasl1.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ fwts-21.06.00/debian/libfwtsiasl1.lintian-overrides 2021-06-21 05:42:45.000000000 +0000 @@ -0,0 +1 @@ +package-has-unnecessary-activation-of-ldconfig-trigger diff -Nru fwts-21.05.00/debian/source/lintian-overrides fwts-21.06.00/debian/source/lintian-overrides --- fwts-21.05.00/debian/source/lintian-overrides 1970-01-01 00:00:00.000000000 +0000 +++ fwts-21.06.00/debian/source/lintian-overrides 2021-06-21 05:42:45.000000000 +0000 @@ -0,0 +1 @@ +unknown-architecture riscv64 diff -Nru fwts-21.05.00/debian/source.lintian-overrides fwts-21.06.00/debian/source.lintian-overrides --- fwts-21.05.00/debian/source.lintian-overrides 2021-05-20 08:31:29.000000000 +0000 +++ fwts-21.06.00/debian/source.lintian-overrides 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -unknown-architecture riscv64 diff -Nru fwts-21.05.00/fwts-test/acpidump-0001/acpidump-0001.log fwts-21.06.00/fwts-test/acpidump-0001/acpidump-0001.log --- fwts-21.05.00/fwts-test/acpidump-0001/acpidump-0001.log 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/acpidump-0001/acpidump-0001.log 2021-06-21 05:43:14.000000000 +0000 @@ -237,7 +237,7 @@ acpidump acpidump HPET @ bf6dfd2e (56 bytes) (loaded from file) acpidump ---- -acpidump [000h 0000 4] Signature : "HPET" [High Precision Event Timer table] +acpidump [000h 0000 4] Signature : "HPET" [High Precision Event Timer Table] acpidump [004h 0004 4] Table Length : 00000038 acpidump [008h 0008 1] Revision : 01 acpidump [009h 0009 1] Checksum : 0A @@ -265,7 +265,7 @@ acpidump acpidump MCFG @ bf6dfd66 (60 bytes) (loaded from file) acpidump ---- -acpidump [000h 0000 4] Signature : "MCFG" [Memory Mapped Configuration table] +acpidump [000h 0000 4] Signature : "MCFG" [Memory Mapped Configuration Table] acpidump [004h 0004 4] Table Length : 0000003C acpidump [008h 0008 1] Revision : 01 acpidump [009h 0009 1] Checksum : 32 @@ -707,7 +707,7 @@ acpidump acpidump TCPA @ bf6dfda2 (50 bytes) (loaded from file) acpidump ---- -acpidump [000h 0000 4] Signature : "TCPA" [Trusted Computing Platform Alliance table] +acpidump [000h 0000 4] Signature : "TCPA" [Trusted Computing Platform Alliance Table] acpidump [004h 0004 4] Table Length : 00000032 acpidump [008h 0008 1] Revision : 01 acpidump [009h 0009 1] Checksum : 8F diff -Nru fwts-21.05.00/fwts-test/arg-json-0001/klog-0001.log fwts-21.06.00/fwts-test/arg-json-0001/klog-0001.log --- fwts-21.05.00/fwts-test/arg-json-0001/klog-0001.log 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/arg-json-0001/klog-0001.log 2021-06-21 05:43:14.000000000 +0000 @@ -1,16 +1,14 @@ klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. -klog FAILED [HIGH] KlogACPIBIOSBugMultipleAPIC: Test 1, HIGH +klog FAILED [MEDIUM] KlogAcpiMultipleMadt: Test 1, MEDIUM klog Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC klog /MADT found, using 0 klog -klog ADVICE: The kernel has detected more than one ACPI -klog Multiple APIC Description Table (MADT) (these tables have -klog the "APIC" signature). There should only be one MADT and -klog the kernel will by default select the first one. However, -klog one can override this and select the Nth MADT using -klog acpi_apic_instance=N. +klog ADVICE: The BIOS is supposed to supply just one APIC/MADT, +klog however, more than one has been found. One can use +klog acpi_apic_instance=N to specify the Nth ACPI/MADT to use +klog as an override if required. klog klog Kernel message: [ 0.228089] [Firmware Bug]: ACPI: BIOS klog _OSI(Linux) query ignored @@ -21,9 +19,37 @@ klog because the ACPI driver matches onto the Windows _OSI klog strings by default. klog -klog Found 1 unique errors in kernel log. +klog FAILED [CRITICAL] KlogPciAcpiOscRequestFailed: Test 1, +klog CRITICAL Kernel message: [ 0.396181] pci0000:00: ACPI _OSC +klog request failed (AE_NOT_FOUND), returned control mask: 0x1d +klog +klog ADVICE: The _OSC method evaluation failed, which will +klog result in disabling PCIe functionality, for example, the +klog Linux kernel has to disable Active State Power Management +klog (ASPM) which means that PCIe power management is not +klog optimally configured. +klog +klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, +klog LOW Kernel message: [ 0.534105] ACPI: Deprecated procfs I +klog /F for AC is loaded, please retry with +klog CONFIG_ACPI_PROCFS_POWER cleared +klog +klog ADVICE: Using an old procfs interface for ACPI AC Adapter, +klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This +klog should be disabled for kernels > 2.6.37. +klog +klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, +klog LOW Kernel message: [ 0.576306] ACPI: Deprecated procfs I +klog /F for battery is loaded, please retry with +klog CONFIG_ACPI_PROCFS_POWER cleared +klog +klog ADVICE: Using an old procfs interface for ACPI battery, +klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This +klog should be disabled for kernels > 2.6.37. +klog +klog Found 4 unique errors in kernel log. klog klog ========================================================== -klog 0 passed, 1 failed, 0 warning, 0 aborted, 0 skipped, 0 +klog 0 passed, 4 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== diff -Nru fwts-21.05.00/fwts-test/arg-json-0001/klog-0002.log fwts-21.06.00/fwts-test/arg-json-0001/klog-0002.log --- fwts-21.05.00/fwts-test/arg-json-0001/klog-0002.log 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/arg-json-0001/klog-0002.log 2021-06-21 05:43:14.000000000 +0000 @@ -1,16 +1,14 @@ klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. -klog FAILED [HIGH] KlogACPIBIOSBugMultipleAPIC: Test 1, HIGH +klog FAILED [MEDIUM] KlogAcpiMultipleMadt: Test 1, MEDIUM klog Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC klog /MADT found, using 0 klog -klog ADVICE: The kernel has detected more than one ACPI -klog Multiple APIC Description Table (MADT) (these tables have -klog the "APIC" signature). There should only be one MADT and -klog the kernel will by default select the first one. However, -klog one can override this and select the Nth MADT using -klog acpi_apic_instance=N. +klog ADVICE: The BIOS is supposed to supply just one APIC/MADT, +klog however, more than one has been found. One can use +klog acpi_apic_instance=N to specify the Nth ACPI/MADT to use +klog as an override if required. klog klog Kernel message: [ 0.228089] [Firmware Bug]: ACPI: BIOS klog _OSI(Linux) query ignored @@ -21,9 +19,37 @@ klog because the ACPI driver matches onto the Windows _OSI klog strings by default. klog -klog Found 1 unique errors in kernel log. +klog FAILED [CRITICAL] KlogPciAcpiOscRequestFailed: Test 1, +klog CRITICAL Kernel message: [ 0.396181] pci0000:00: ACPI _OSC +klog request failed (AE_NOT_FOUND), returned control mask: 0x1d +klog +klog ADVICE: The _OSC method evaluation failed, which will +klog result in disabling PCIe functionality, for example, the +klog Linux kernel has to disable Active State Power Management +klog (ASPM) which means that PCIe power management is not +klog optimally configured. +klog +klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, +klog LOW Kernel message: [ 0.534105] ACPI: Deprecated procfs I +klog /F for AC is loaded, please retry with +klog CONFIG_ACPI_PROCFS_POWER cleared +klog +klog ADVICE: Using an old procfs interface for ACPI AC Adapter, +klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This +klog should be disabled for kernels > 2.6.37. +klog +klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, +klog LOW Kernel message: [ 0.576306] ACPI: Deprecated procfs I +klog /F for battery is loaded, please retry with +klog CONFIG_ACPI_PROCFS_POWER cleared +klog +klog ADVICE: Using an old procfs interface for ACPI battery, +klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This +klog should be disabled for kernels > 2.6.37. +klog +klog Found 4 unique errors in kernel log. klog klog ========================================================== -klog 0 passed, 1 failed, 0 warning, 0 aborted, 0 skipped, 0 +klog 0 passed, 4 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== diff -Nru fwts-21.05.00/fwts-test/arg-json-0001/klog.json fwts-21.06.00/fwts-test/arg-json-0001/klog.json --- fwts-21.05.00/fwts-test/arg-json-0001/klog.json 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/arg-json-0001/klog.json 1970-01-01 00:00:00.000000000 +0000 @@ -1,1117 +0,0 @@ -{ - "common_error_warning_patterns": - [ - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_BIOS_THERMAL", - "pattern": "Temperature above threshold, cpu clock throttled", - "advice": "Test caused CPU temperature above critical threshold. Insufficient cooling?" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_BIOS", - "pattern": "BIOS never enumerated boot CPU", - "advice": "The boot processor is not enumerated!" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_HOTPLUG", - "pattern": "acpi_shpchprm.*_HPP fail", - "advice": "Hotplug _HPP method failed" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_HOTPLUG", - "pattern": "shpchp.*acpi_pciehprm.*OSHP fail", - "advice": "ACPI Hotplug OSHP method failed" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_HOTPLUG", - "pattern": "shpchp.*acpi_shpchprm.*evaluate _BBN fail", - "advice": "Hotplug _BBN method is missing" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "Error while parsing _PSD domain information", - "advice": "_PSD domain information is corrupt!" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI", - "pattern": "Wrong _BBN value, reboot and use option 'pci=noacpi'", - "advice": "The BIOS has wrong _BBN value, which will make PCI root bridge have wrong bus number" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_APIC", - "pattern": "ACPI.*apic on CPU.* stops in C2", - "advice": "The local apic timer incorrectly stops during C2 idle state.The ACPI specification forbids this and Linux needs the local APIC timer to work. The most likely cause of this is that the firmware uses a hardware C3 or C4 state that is mapped to the ACPI C2 state." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_BIOS_IRQ", - "pattern": "Disabling IRQ", - "advice": "The kernel detected an irq storm. This is most probably an IRQ routing bug." - } - ], - "firmware_error_warning_patterns": - [ - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_WMI", - "pattern": "dell_wmi:.*Received unknown WMI event", - "advice": "The Dell WMI driver has received an unknown WMI event. The driver should handle this new event or the firmware is reporting an incorrect and unknown event." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_WMI", - "pattern": "dell_wmi:.*bad event status 0x", - "advice": "The Dell WMI driver has received a bad event status. This should be investigated further." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_WMI", - "pattern": "asus_wmi:.*Unknown key.*pressed", - "advice": "The ASUS WMI driver has received an unknown key event. The driver should handle this new key event or the firmware is reporting an incorrect and unknown event." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_WMI", - "pattern": "hp_wmi:.*bad event status 0x", - "advice": "The HP WMI driver has received a bad event status. This should be investigated further." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_WMI", - "pattern": "hp_wmi:.*Unknown response received", - "advice": "The HP WMI driver has received a return object that was not of type ACPI_BUFFER. The driver needs to be updated to handle this new return type or there is a bug in the WMI mechanism on this machine." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_WMI", - "pattern": "hp_wmi:.*Unknown buffer length", - "advice": "The HP WMI driver has received a return buffer that was not the expected size of 8 or 16 bytes. This is probably a bug in the WMI mechanism on this machine." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_WMI", - "pattern": "hp_wmi:.*Unknown key code - 0x", - "advice": "The HP WMI driver has received a key code that it does not recognise. The driver needs to be updated to handle this new key code." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_WMI", - "pattern": "hp_wmi:.*Unknown event_id", - "advice": "The HP WMI driver has received an event ID that it does not recognise. The driver needs to be updated to handle this new event ID." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_WMI", - "pattern": "msi_wmi:.*Unknown key pressed", - "advice": "The MSI WMI driver has received a key code that it does not recognise. The driver needs to be updated to handle this new key code." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "ACPI.*Handling Garbled _PRT entry", - "advice": "BIOS has a garbled _PRT entry; source_name and source_index swapped." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_ACPI", - "pattern": "Invalid _PCT data", - "advice": "The ACPI _PCT data is invalid." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "ACPI Error.*ACPI path has too many parent prefixes", - "advice": "A path to an ACPI obejct has too many ^ parent prefixes and references passed the top of the root node. Please check AML for all ^ prefixed ACPI path names." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI_RSDP", - "pattern": "ACPI Error.*A valid RSDP was not found", - "advice": "An ACPI-compatible system must provide an RSDP (Root System Description Pointer in the system’s low address space. This structure’s only purpose is to provide the physical address of the RSDT and XSDT." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI_MUTEX", - "pattern": "ACPI Error.*Cannot release Mutex", - "advice": "Attempted to release of a Mutex that was not previous acquired. This needs fixing as it could lead to race conditions when operating on a resource that needs to be proteced by a Mutex." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_EVENT", - "pattern": "ACPI Error.*Could not disable .* event", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_EVENT", - "pattern": "ACPI Error.*Could not enable .* event", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BRIGHTNESS", - "pattern": "ACPI Error.*Current brightness invalid", - "advice": "ACPI video driver has encountered a brightness level that is outside the expected range." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_NAMESPACE_LOOKUP", - "pattern": "ACPI Error.*Namespace lookup failure, AE_ALREADY_EXISTS", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI_BUFFER_OVERFLOW", - "pattern": "ACPI Error.*_SB_._OSC.*AE_AML_BUFFER_LIMIT", - "advice": "Section 6.2.10.2 of V4.0a of the ACPI specification states that the _OSC Method should be passed an 8 byte buffer of 2 x 32 DWORDs, however it appears that the method is possibly trying to access data outside this buffer. This is a bug in the _OSC method." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI_BUFFER_OVERFLOW", - "pattern": "ACPI Error.*Field.*exceeds Buffer", - "advice": "The field exceeds the allocated buffer size. This can lead to unexpected results when fetching data outside this region." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI_IO_PORT", - "pattern": "ACPI Error.*Illegal I\/O port address\/length above 64K", - "advice": "A port address or length has exceeded the maximum allowed 64K address limit. This will lead to unpredicable errors." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "ACPI Error.*Incorrect return type", - "advice": "An ACPI Method has returned an unexpected and incorrect return type." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "ACPI Error.*Needed .*\\[Buffer\/String\/Package\\], found \\[Integer\\]", - "advice": "An ACPI Method has returned an Integer type when a Buffer, String or Package was expected." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "ACPI Error.*Needed .*\\[Reference\\], found \\[Device\\]", - "advice": "An ACPI Method has returned an Device type when a Reference type was expected." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_NO_HANDLER", - "pattern": "ACPI Error.*No handler for Region", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_NO_HANDLER", - "pattern": "ACPI Error.*Region .* has no handler", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "ACPI Error.*Missing expected return value", - "advice": "The ACPI Method did not return a value and was expected too. This is a bug and needs fixing." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "Package List length.*larger than.*truncated", - "advice": "A Method has returned a Package List that was larger than expected." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "ACPI Error.*Result stack is empty!", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI_AML_OPCODE", - "pattern": "ACPI Error.*Found unknown opcode", - "advice": "An illegal AML opcode has been found and is ignored. This indicates either badly compiled code or opcode corruption in the DSDT or SSDT tables or a bug in the ACPI execution engine. Recommend disassembing using iasl to find any offending code." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI_AML_OPCODE", - "pattern": "ACPI Warning.*Detected an unsupported executable opcode", - "advice": "An illegal AML opcode has been found and is ignored. This indicates either badly compiled code or opcode corruption in the DSDT or SSDT tables or a bug in the ACPI execution engine. Recommend disassembing using iasl to find any offending code." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_BIOS", - "pattern": "bios32_service.*not present", - "advice": "The BIOS has found a BIOS32 Service Directory but the BIOS has returned error 0x80 on calling the service, which indicates that the requested service has not been implemented in the firmware." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_BIOS", - "pattern": "bios32_service.*BIOS bug", - "advice": "The BIOS has found a BIOS32 Service Directory but the BIOS has returned an error on calling the service, which is unexpected and usually means the firmware is broken." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_BIOS_IRQ", - "pattern": "PCI: Error.*when fetching IRQ routing table", - "advice": "The BIOS has been interrogated for the PCI IRQ routing table but the BIOS returned an error." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Denied AML access to port", - "advice": "AML code was accessing an I/O port that was banned from accesses. Ports 0x20-0x21 (PIC0), 0xa0-0xa1 (PIC1), 0x4d0-0x4d1 (ELCR) are always banned. For _OSI() greater or equal to 'Windows 2001' (Windows XP) ports 0x00-0x0f (DMA), 0x40-0x43 (PIT1), 0x48-0x4b (PIT2), 0x70-0x71 (RTC), 0x81-0x83 (DMA1), 0x87 (DMA1L), 0x89-0x8b (DMA2), 0x8f (DMA2L), 0x90-0x91 (ARBC), 0x93-0x94 (SETUP), 0x96-0x97 (POS), 0xc0-0xdf (ISA DMA) and 0xcf8-0xcff (PCI config) are banned. Since the AML code has been banned from accessing these ports you will get undefined behaviour and the AML code should be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Method parse\/execution failed.*AE_AML_NO_RETURN_VALUE", - "advice": "The ACPI Method was expected to return a value and did not." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_ALREADY_EXISTS", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_INVALID_TABLE_LENGTH", - "advice": "The ACPI Method returned a table of the incorrect length. This can lead to unexepected results." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_AML_BUFFER_LIMIT", - "advice": "Method failed: ResourceSourceIndex is present but ResourceSource is not." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_NOT_EXIST", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_NOT_FOUND", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_LIMIT", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_AML_OPERAND_TYPE", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_TIME", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_AML_PACKAGE_LIMIT", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_OWNER_ID_LIMIT", - "advice": "Method failed to allocate owner ID." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_AML_MUTEX_NOT_ACQUIRED", - "advice": "A Mutex acquire failed, which could possibly indicate that it was previously acquired and not released, or a race has occurred. Some AML code fails to miss Mutex acquire failures, so it is a good idea to verify all Mutex Acquires using the syntaxcheck test." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "ACPI Error.*SMBus or IPMI write requires Buffer of", - "advice": "An incorrect SMBus or IPMI write buffer size was used." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BRIGHTNESS", - "pattern": "ACPI Error.*Evaluating _BCM failed", - "advice": "The ACPI engine has failed to execute the _BCM Brightness Control Method. This will result in possibly failing to set the display brightness level." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_EVAL", - "pattern": "ACPI (Warning|Error).*Evaluating .* failed", - "advice": "Executing the ACPI Method leaded in an execution failure. This needs investigating." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", - "pattern": "ACPI Warning.*Optional field.*has zero address or length", - "advice": "An ACPI table contains Generic Address Structure that has an address that is incorrectly set to zero, or a zero length. This needs to be fixed. " - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", - "pattern": "ACPI (Warning|Error).*two DSDT tables", - "advice": "The FADT table contains a mismatch between the 32 bit pointer (DSDT) and 64 bit pointer (X_DSDT) pointer to the FACS table. Section 5.2.9 of version 4.0a of the ACPI specification states that X_DSDT should be zero if DSDT is defined, or DSDT should be zero if X_DSDT is zero. With two different pointers defined, the kernel has to make a choice, and opts for the 32 bit pointer. Because these pointers are different, it suggests either one of them is incorrect, or different 32 bit and 64 bit DSDT tables are present in your system, which is NOT complaint with the ACPI specification. The kernel has to make a choice and opts for the 32 bit DSDT." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", - "pattern": "ACPI (Warning|Error).*two FACS tables", - "advice": "The FADT table contains a mismatch between the 32 bit pointer (FIRMWARE_CTRL) and 64 bit pointer (X_FIRMWARE_CTRL) pointer to the FACS table. Section 5.2.9 of version 4.0a of the ACPI specification states that X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is defined, or FIRMWARE_CTRL should be zero if X_FIRMWARE_CTRL is zero. With two different pointers defined, the kernel has to make a choice, and opts for the 32 bit pointer. Because these pointers are different, it suggests either one of them is incorrect, or different 32 bit and 64 bit FACS tables are present in your system, which is NOT complaint with the ACPI specification. The kernel has to make a choice and opts for the 32 bit FIRMWARE_CTRL." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", - "pattern": "ACPI Error.*32/64X address mismatch in.*, using 32", - "advice": "The FADT table contains a mismatch between a 32 bit pointer and a 64 bit Generic Address pointer. Because these pointers are different, it suggests either one of them is incorrect. If a non-null 32 bit pointer exists, then the kernel will opt for this in preference to the 64 bit pointer even though this is not in accordance to the ACPI specification." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", - "pattern": "ACPI (Warning|Error).*32\/64.*(length|address) mismatch in.*tbfadt", - "advice": "The FADT table contains Generic Address Structure that has a mismatch between the 32 bit and 64 bit versions of an address. This should be fixed so there are no mismatches. " - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", - "pattern": "ACPI (Warning|Error).*32\/64.*(length|address) mismatch in", - "advice": "A table contains Generic Address Structure that has a mismatch between the 32 bit and 64 bit versions of an address. This should be fixed so there are no mismatches. " - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "ACPI Warning.*Return Package type mismatch", - "advice": "ACPI AML interpreter executed a Method that returned a package with incorrectly typed data. The offending method needs to be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "ACPI Warning.*Return Package has no elements", - "advice": "ACPI AML interpreter executed a Method that returned a package with no elements inside it. This is most probably a bug in the Method and needs to be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "ACPI Warning.*Return Package is too small", - "advice": "ACPI AML interpreter executed a Method that returned a package with too few elements inside it. This is most probably a bug in the Method and needs to be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_ACPI_TABLE_CHECKSUM", - "pattern": "ACPI Warning.*Incorrect checksum in table", - "advice": "The ACPI table listed above has an incorrect checksum, this could be a BIOS bug or due to table corruption." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "ACPI Warning.*_BQC returned an invalid level", - "advice": "Method _BQC (Brightness Query Current) returned an invalid display brightness level." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BRIGHTNESS", - "pattern": "ACPI Error.*Found unordered _BCL package", - "advice": "Method _BCL (Query List of Brightness Control Levels Supported) has a maximum brightness value which is not the last value in the returned package. Values returned must be in ascending order." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BRIGHTNESS", - "pattern": "ACPI Error.*Too many duplicates in _BCL package", - "advice": "Method _BCL (Query List of Brightness Control Levels Supported) contains too many duplicated brightness levels in the returned package and this is non-standard." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "ACPI Warning.*Could not enable fixed event", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "ACPI Warning.*Return type mismatch", - "advice": "The ACPI Method returned an incorrect type, this should be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARAMETER", - "pattern": "ACPI Warning.*Parameter count mismatch", - "advice": "The ACPI Method was executing with a different number of parameters than the Method expected. This should be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARAMETER", - "pattern": "ACPI Warning.*Insufficient arguments", - "advice": "The ACPI Method has not enough arguments as expected. This should be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PACKAGE", - "pattern": "ACPI Warning.*Package has no elements", - "advice": "The ACPI Method returned a package with no elements in it, and some were exepected.This should be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "ACPI Warning.*Converted Buffer to expected String", - "advice": "Method returned a Buffer type instead of a String type and ACPI driver automatically converted it to a String. It is worth fixing this in the DSDT or SSDT even if the kernel fixes it at run time." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PACKAGE", - "pattern": "ACPI Warning.*Return Package type mistmatch at index", - "advice": "The ACPI Method returned a package that contained data of the incorrect data type. This data type needs fixing." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BAD_LENGTH", - "pattern": "ACPI Warning.*Invalid length for.*fadt", - "advice": "This item in the FADT is the incorrect length. Should be corrected." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_THROTTLING", - "pattern": "ACPI Warning.*Invalid throttling state", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_EMBEDDED_CONTROLLER", - "pattern": "ACPI Exception:.*AE_TIME.*Returned by Handler for.*[EmbeddedControl]", - "advice": "This is most probably caused by when a read or write operation to the EC memory has failed because of a timeout waiting for the Embedded Controller to complete the transaction. Normally, the kernel waits for 500ms for the Embedded Controller status port to indicate that a transaction is complete, but in this case it has not and a AE_TIME error has been returned. " - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "ACPI Warning", - "advice": "ACPI AML intepreter has found some non-conforming AML code. This should be investigated and fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_APIC", - "pattern": "ACPI.*BIOS bug: multiple APIC\/MADT found, using", - "advice": "The kernel has detected more than one ACPI Multiple APIC Description Table (MADT) (these tables have the \"APIC\" signature). There should only be one MADT and the kernel will by default select the first one. However, one can override this and select the Nth MADT using acpi_apic_instance=N." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", - "pattern": "\\[Firmware Bug\\]: ACPI.*Invalid physical address in GAR", - "advice": "ACPI Generic Address is invalid" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_BIOS_AMD_POWERNOW", - "pattern": "\\[Firmware Bug\\]: powernow-k8.*(No PSB or ACPI _PSS objects|No compatible ACPI _PSS|Your BIOS does not provide ACPI _PSS objects)", - "advice": "The _PSS object (Performance Supported States) is an optional object that indicates the number of supported processor performance states. The powernow-k8 driver source states: If you see this message, complain to BIOS manufacturer. If he tells you \"we do not support Linux\" or some similar nonsense, remember that Windows 2000 uses the same legacy mechanism that the old Linux PSB driver uses. Tell them it is broken with Windows 2000. The reference to the AMD documentation is chapter 9 in the BIOS and Kernel Developer's Guide, which is available on www.amd.com." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_BIOS_AMD_POWERNOW", - "pattern": "\\[Firmware Bug\\]: powernow-k8.*Try again with latest", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", - "pattern": "\\[Firmware Bug\\]: ACPI.*Invalid bit width in GAR", - "advice": "ACPI Generic Address width must be 8, 16, 32 or 64" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", - "pattern": "\\[Firmware Bug\\]: ACPI.*Invalid address space type in GAR", - "advice": "ACPI Generic Address space type must be system memory or system IO space." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", - "pattern": "\\[Firmware Bug\\]: ACPI.*no secondary bus range in _CRS", - "advice": "_CRS Method should return a secondary bus address for the status\/command port. The kernel is having to guess this based on the _BBN or assume it's 0x00-0xff." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_ACPI", - "pattern": "\\[Firmware Bug\\]: ACPI.*Invalid BIOS _PSS frequency", - "advice": "_PSS (Performance Supported States) package has an incorrectly define core frequency (first DWORD entry in the _PSS package)." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BRIGHTNESS", - "pattern": "\\[Firmware Bug\\]: ACPI.*No _BQC method", - "advice": "_BQC (Brightness Query Current level) seems to be missing. This method returns the current brightness level of a built-in display output device." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BRIGHTNESS", - "pattern": "\\[Firmware Bug\\]: ACPI.*brightness control misses _BQC function", - "advice": "_BQC (Brightness Query Current level) seems to be missing. This method returns the current brightness level of a built-in display output device." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "\\[Firmware Bug\\]: BIOS needs update for CPU frequency support", - "advice": "Having _PPC but missing frequencies (_PSS, _PCT) is a good hint that the BIOS is older than the CPU and does not know the CPU frequencies." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "\\[Firmware Bug\\]: ERST.*ERST table is invalid", - "advice": "The Error Record Serialization Table (ERST) seems to be invalid. This normally indicates that the ERST table header size is too small, or the table size (excluding header) is not a multiple of the ERST entries." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI_THERMAL", - "pattern": "\\[Firmware Bug\\]:.*Invalid critical threshold", - "advice": "ACPI _CRT (Critical Trip Point) is returning a threshold lower than zero degrees Celsius which is clearly incorrect." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI_THERMAL", - "pattern": "\\[Firmware Bug\\]:.*No valid trip found", - "advice": "No valud ACPI _CRT (Critical Trip Point) was found." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_BRIGHTNESS", - "pattern": "\\[Firmware Bug\\]:.*_BCQ is used instead of _BQC", - "advice": "ACPI Method _BCQ was defined (typo) instead of _BQC - this should be fixed.however the kernel has detected this and is working around this typo." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_BIOS", - "pattern": "MPTABLE: bad signature", - "advice": "The MultiProcessor table has an incorrect signature, it should be PCMP. The kernel cannot trust the table and has disabled SMP support." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_BIOS", - "pattern": "MPTABLE: checksum error", - "advice": "The MultiProcessor table has an incorrect checksum. The kernel cannot trust the table and has disabled SMP support." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_BIOS", - "pattern": "MPTABLE: bad table version", - "advice": "The MultiProcessor table has an incorrect version. It should be 0x01 or 0x04 (for versions 1.1 and 1.4 respectively). The kernel cannot trust the table and has disabled SMP support." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_BIOS", - "pattern": "MPTABLE: null local APIC address", - "advice": "The MultiProcessor table contains a NULL Local APIC address but the Local APIC address must be defined. The kernel has disabled SMP support." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_BIOS", - "pattern": "MPTABLE: no processors registered", - "advice": "The MultiProcessor table contains no Processor Entry Fields, and hence there are no CPUs defined. The kernel has no option but to disable SMP support." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_BIOS", - "pattern": "BIOS bug.*no explicit IRQ entries.*using default mptable", - "advice": "The MultiProcessor table contains no IRQ Entry Fields, and hence there are no IRQs defined. The table is broken and should be fixed. The kernel will set up the low 16 IO-APIC pins to the ISA defaults in the hope the machine may work." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_BIOS_IRQ", - "pattern": "BIOS bug.*timer not connected to IO-APIC", - "advice": "The BIOS is reporting the ExtINTA I/O APIC input from the cascaded 8259A as the timer interrupt input. The kernel has detected just one pin, so it has to check the timer directly and through the 8259A because of the broken BIOS reporting." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_BIOS_IRQ", - "pattern": "BIOS bug,.*IO-APIC.*ID is.*in the MPC table.*", - "advice": "The IO-APIC id in the MPC table is wrong and the kernel has detected this and attempted to fix it. The MPC table in the firmware needs to be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_BIOS_IRQ", - "pattern": "BIOS bug,.*IO-APIC.*ID is already used!", - "advice": "The IO-APIC id has been defined more than once in the MPC table, which is a firmware bug and should be fixed. The kernel has detected this and skopped this duplication to avoid stuck on smp_invalidate_needed IPI wait' messages." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_BIOS", - "pattern": "WARNING.*BIOS bug.*CPU MTRRs don't cover all of memory, losing", - "advice": "The Memory Type Range Registers (MTRRs) which define memory caching policy are misconfigued by the BIOS and don't appear to cover all available physical memory. The kernel has detected this and has reduced the amount of memory available to be safe. Either check that the BIOS memory caching options are set correctly or contact your BIOS vendor to get this fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_BIOS", - "pattern": "mtrr:.*your BIOS has configured an incorrect mask, fixing it", - "advice": "The Memory Type Range Registers (MTRRs) which define memory caching policy are misconfigued by the BIOS. In this case, the mask is incorrectly set and the kernel has detected this and worked around the firmware bug." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_BIOS", - "pattern": "mtrr:.*your CPUs had inconsistent fixed MTRR settings", - "advice": "The fixed Memory Type Range Registers (MTRRs) which define memory caching policy are not consistent across all CPUs which is a firmware bug. The kernel has worked around this bug, but it may be worth getting the BIOS vendor to fix this." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_BIOS", - "pattern": "mtrr:.*your CPUs had inconsistent variable MTRR settings", - "advice": "The variable Memory Type Range Registers (MTRRs) which define memory caching policy are not consistent across all CPUs which is a firmware bug. The kernel has worked around this bug, but it may be worth getting the BIOS vendor to fix this." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_BIOS", - "pattern": "mtrr:.*your CPUs had inconsistent MTRRdefType settings", - "advice": "The Memory Type Range Registers (MTRRs) which define memory caching policy do not have a MTRRdefType consistently set across all CPUs which is a firmware bug. The kernel has worked around this bug, but it may be worth getting the BIOS vendor to fix this." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_BIOS", - "pattern": "mtrr:.*base.*is not 4 MiB aligned", - "advice": "The Memory Type Range Registers (MTRRs) for Intel PPro CPUs with stepping < 8 must be 4 MiB aligned and not touch 0x70000000 -> 0x7003FFFF. This BIOS misconfiguration and should be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITIICAL", - "tag": "FWTS_TAG_BIOS", - "pattern": "mtrr:.*writable mtrr between 0x70000000 and 0x7003FFFF may hang the CPU", - "advice": "The Memory Type Range Registers (MTRRs) for Intel PPro CPUs with stepping < 8 must not touch region 0x70000000 -> 0x7003FFFF. This BIOS misconfiguration may hang the CPU and should be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_BIOS", - "pattern": "mtrr:.*base.*is not aligned on a size.*boundary", - "advice": "The Memory Type Range Registers (MTRRs) must be correctly aligned. This BIOS misconfiguration and should be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": ".*defines _DOD but not _DOS", - "advice": "ACPI Method _DOD (Enumerate all devices attached to display adapter) is defined but we should also have _DOS (Enable\/Disable output switching) defined but it's been omitted. This can cause display switching issues." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "WARNING:.*bogus zero IO-APIC address found in MPTABLE", - "advice": "An IO-APIC address of zero has been found in the MPTABLE and is thus treated as misconfigured or bogus. I/O APIC support has been disabled. This is considered a firmware bug and the MPTABLE needs to be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "WARNING:.*Bogus.*APIC address found in table", - "advice": "An IO-APIC address of zero has been found in the MPTABLE and is thus treated as misconfigured or bogus. I/O APIC support has been disabled. This is considered a firmware bug and the MPTABLE needs to be fixed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_ACPI", - "pattern": "\\[Firmware Bug\\]:.*Duplicate ACPI video bus", - "advice": "Try video module parameter video.allow_duplicates=1 if the current driver does't work." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_ACPI_PCI_EXPRESS", - "pattern": "\\[Firmware Bug\\]:.*PCI.*MMCONFIG.*not reserved in ACPI motherboard resources", - "advice": "It appears that PCI config space has been configured for a specific device but does not appear to be reserved by the ACPI motherboard resources." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_ACPI", - "pattern": "\\[Firmware Bug\\]: PCI.*not reserved in ACPI motherboard resources", - "advice": "PCI firmware bug. Please see the kernel log for more details." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_INFO", - "tag": "FWTS_TAG_ACPI", - "pattern": "\\[Firmware Bug\\]:.*_OSI.*Linux.*ignored", - "advice": "This is not exactly a failure mode but a warning from the kernel. The _OSI() method has implemented a match to the 'Linux' query in the DSDT and this is redundant because the ACPI driver matches onto the Windows _OSI strings by default." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "\\[Firmware Bug\\]: ACPI:", - "advice": "ACPI driver has detected an ACPI bug. This generally points to a bug in an ACPI table. Examine the kernel log for more details." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "\\[Firmware Bug\\]:.*", - "advice": "The kernel has detected a Firmware bug in the BIOS or ACPI which needs investigating and fixing." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_BIOS", - "pattern": "PCI.*BIOS Bug:", - "advice": "" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_NAMESPACE_LOOKUP", - "pattern": "ACPI Error.*Namespace lookup failure, AE_NOT_FOUND", - "advice": "The kernel has detected an error trying to execute an Method and it cannot find an object. This is indicates a bug in the DSDT or SSDT AML code." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "ACPI Error.+psparse", - "advice": "The ACPI engine has failed to execute some AML. The error message above lists the method that caused this error." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI", - "pattern": "ACPI Error", - "advice": "The kernel has most probably detected an error while executing ACPI AML. The error lists the ACPI driver module and the line number where the bug has been caught and the method that caused the error." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "\\*\\*\\* Error.*Method execution failed", - "advice": "Execution of an ACPI AML method failed." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "\\*\\*\\* Error.*Method execution failed.*AE_AML_METHOD_LIMIT", - "advice": "ACPI method reached maximum reentrancy limit of 255 - infinite recursion in AML in DSTD or SSDT" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", - "pattern": "\\*\\*\\* Error.*Method reached maximum reentrancy limitACPI method has reached reentrancy limit, this is a recursion bug in the AML", - "advice": "" - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_ACPI_METHOD_RETURN", - "pattern": "\\*\\*\\* Error.*Return object type is incorrect", - "advice": "Return object type is not the correct type, this is an AML error in the DSDT or SSDT" - } - ], - "pm_error_warning_patterns": - [ - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Failed to prepare device", - "advice": "dpm_prepare() failed to prepare all non-sys devices for a system PM transition. The device should be listed in the error message." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Some devices failed to power down", - "advice": "dpm_suspend_noirq failed because some devices did not power down " - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Some system devices failed to power down", - "advice": "sysdev_suspend failed because some system devices did not power down." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Error", - "advice": "" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_NONE", - "pattern": "PM: Some devices failed to power down", - "advice": "" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Restore failed, recovering", - "advice": "A resume from hibernate failed when calling hibernation_restore()" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Resume from disk failed", - "advice": "" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Not enough free memory", - "advice": "There was not enough physical memory to be able to generate a hibernation image before dumping it to disc." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Memory allocation failed", - "advice": "swusp_alloc() failed trying to allocate highmem and failing that non-highmem pages for the suspend image. There is probably just not enough free physcial memory available." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Image mismatch", - "advice": "Mismatch in kernel version, system type, kernel release version or machine id between suspended kernel and resumed kernel." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Some devices failed to power down", - "advice": "" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Some devices failed to suspend", - "advice": "" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: can't read", - "advice": "Testing suspend cannot read RTC" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: can't set", - "advice": "Testing suspend cannot set RTC" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: suspend test failed, error", - "advice": "" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: can't test ", - "advice": "" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_MEDIUM", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: no wakealarm-capable RTC driver is ready", - "advice": "" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Adding page to bio failed at", - "advice": "An attempt to write the hibernate image to disk failed because a write BIO operation failed. This is usually a result of some physical hardware problem." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Swap header not found", - "advice": "An attempt to write a hibernate image to disk failed because a valid swap device header could not be found. Make sure there is a formatted swap device on the machine and it is added using swapon -a." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Cannot find swap device", - "advice": "An attempt to write a hibernate image to disk failed because the swap device could not be found. Make sure there is a formatted swap device on the machine and it is added using swapon -a." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_CRITICAL", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Not enough free swap", - "advice": "Hibernate failed because the swap parition was probably too small." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Image device not initialised", - "advice": "" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "PM: Please power down manually", - "advice": "" - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "check_for_bios_corruption", - "advice": "The BIOS seems to be corrupting the first 64K of memory when doing suspend\/resume. Setting bios_corruption_check=0 will disable this check." - }, - { - "compare_mode": "regex", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "WARNING: at.*hpet_next_event", - "advice": "Possibly an Intel I\/O controller hub HPET Write Timing issue: A read transaction that immediately follows a write transaction to the HPET TIMn_COMP Timer 0 (108h), HPET MAIN_CNT (0F0h), or TIMn_CONF.bit 6 (100h) may return an incorrect value. This is known to cause issues when coming out of S3." - }, - { - "compare_mode": "string", - "log_level": "LOG_LEVEL_HIGH", - "tag": "FWTS_TAG_POWER_MANAGEMENT", - "pattern": "BUG: soft lockup.*stuck for 0s", - "advice": "Softlock errors that occur when coming out of S3 may be tripped by TSC warping. It may be worth trying the notsc kernel parameter and repeating S3 tests to see if this solves the problem." - } - ] -} diff -Nru fwts-21.05.00/fwts-test/arg-json-0001/test-0001.sh fwts-21.06.00/fwts-test/arg-json-0001/test-0001.sh --- fwts-21.05.00/fwts-test/arg-json-0001/test-0001.sh 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/arg-json-0001/test-0001.sh 2021-06-21 05:43:14.000000000 +0000 @@ -3,12 +3,12 @@ TEST="Test --json-data-path option" NAME=test-0001.sh TMPLOG=$TMP/klog.log.$$ -HERE=$FWTSTESTDIR/arg-json-0001 +HERE=$FWTSTESTDIR/../data $FWTS --log-format="%line %owner " -w 80 --json-data-path=$HERE --klog=$FWTSTESTDIR/arg-json-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-json-0001/klog-0001.log >> $FAILURE_LOG ret=$? -if [ $ret -eq 0 ]; then +if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME diff -Nru fwts-21.05.00/fwts-test/arg-json-0001/test-0002.sh fwts-21.06.00/fwts-test/arg-json-0001/test-0002.sh --- fwts-21.05.00/fwts-test/arg-json-0001/test-0002.sh 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/arg-json-0001/test-0002.sh 2021-06-21 05:43:14.000000000 +0000 @@ -3,12 +3,12 @@ TEST="Test -j option" NAME=test-0002.sh TMPLOG=$TMP/klog.log.$$ -HERE=$FWTSTESTDIR/arg-json-0001 +HERE=$FWTSTESTDIR/../data $FWTS --log-format="%line %owner " -w 80 -j $HERE --klog=$FWTSTESTDIR/arg-json-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-json-0001/klog-0002.log >> $FAILURE_LOG ret=$? -if [ $ret -eq 0 ]; then +if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME diff -Nru fwts-21.05.00/fwts-test/arg-table-path-0001/acpidump-0001.log fwts-21.06.00/fwts-test/arg-table-path-0001/acpidump-0001.log --- fwts-21.05.00/fwts-test/arg-table-path-0001/acpidump-0001.log 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/arg-table-path-0001/acpidump-0001.log 2021-06-21 05:43:14.000000000 +0000 @@ -182,12 +182,12 @@ acpidump [000h 0000 4] Signature : "DSDT" acpidump [000h 0000 4] Signature : "FACP" [Fixed ACPI Description Table (FADT)] acpidump [000h 0000 4] Signature : "FACS" -acpidump [000h 0000 4] Signature : "HPET" [High Precision Event Timer table] -acpidump [000h 0000 4] Signature : "MCFG" [Memory Mapped Configuration table] +acpidump [000h 0000 4] Signature : "HPET" [High Precision Event Timer Table] +acpidump [000h 0000 4] Signature : "MCFG" [Memory Mapped Configuration Table] acpidump [000h 0000 4] Signature : "RSDT" [Root System Description Table] acpidump [000h 0000 4] Signature : "SLIC" [Software Licensing Description Table] acpidump [000h 0000 4] Signature : "SSDT" -acpidump [000h 0000 4] Signature : "TCPA" [Trusted Computing Platform Alliance table] +acpidump [000h 0000 4] Signature : "TCPA" [Trusted Computing Platform Alliance Table] acpidump [000h 0000 4] Signature : "TMOR" acpidump [000h 0000 4] Signature : "XSDT" [Extended System Description Table] acpidump [000h 0000 8] Signature : "RSD PTR " diff -Nru fwts-21.05.00/fwts-test/boot-0001/boot-0001-efi.log fwts-21.06.00/fwts-test/boot-0001/boot-0001-efi.log --- fwts-21.05.00/fwts-test/boot-0001/boot-0001-efi.log 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/boot-0001/boot-0001-efi.log 2021-06-21 05:43:14.000000000 +0000 @@ -1,6 +1,6 @@ boot boot: BOOT Table test. boot ---------------------------------------------------------- -boot ACPI BOOT table is depreciated on UEFI firmware, skipping +boot ACPI BOOT table is deprecated on UEFI firmware, skipping boot test boot ========================================================== boot 0 passed, 0 failed, 0 warning, 0 aborted, 1 skipped, 0 diff -Nru fwts-21.05.00/fwts-test/boot-0001/boot-0002-efi.log fwts-21.06.00/fwts-test/boot-0001/boot-0002-efi.log --- fwts-21.05.00/fwts-test/boot-0001/boot-0002-efi.log 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/boot-0001/boot-0002-efi.log 2021-06-21 05:43:14.000000000 +0000 @@ -1,6 +1,6 @@ boot boot: BOOT Table test. boot ---------------------------------------------------------- -boot ACPI BOOT table is depreciated on UEFI firmware, skipping +boot ACPI BOOT table is deprecated on UEFI firmware, skipping boot test boot ========================================================== boot 0 passed, 0 failed, 0 warning, 0 aborted, 1 skipped, 0 diff -Nru fwts-21.05.00/fwts-test/pptt-0001/pptt-0001.log fwts-21.06.00/fwts-test/pptt-0001/pptt-0001.log --- fwts-21.05.00/fwts-test/pptt-0001/pptt-0001.log 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/pptt-0001/pptt-0001.log 2021-06-21 05:43:14.000000000 +0000 @@ -47,7 +47,7 @@ pptt Attributes: 0x00 pptt Line size: 0x0000 pptt -pptt PPTT type 2 is depreciated since ACPI 6.3 Errata A. +pptt PPTT type 2 is deprecated since ACPI 6.3 Errata A. pptt ID structure (Type 2): pptt Type: 0x02 pptt Length: 0x1e diff -Nru fwts-21.05.00/fwts-test/pptt-0001/pptt-0002.log fwts-21.06.00/fwts-test/pptt-0001/pptt-0002.log --- fwts-21.05.00/fwts-test/pptt-0001/pptt-0002.log 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/pptt-0001/pptt-0002.log 2021-06-21 05:43:14.000000000 +0000 @@ -59,7 +59,7 @@ pptt FAILED [HIGH] PPTTReservedBitsNonZero: Test 1, PPTT Flags pptt Bits [31..7] must be zero, got 0x000000ff instead pptt -pptt PPTT type 2 is depreciated since ACPI 6.3 Errata A. +pptt PPTT type 2 is deprecated since ACPI 6.3 Errata A. pptt ID structure (Type 2): pptt Type: 0x02 pptt Length: 0x1e diff -Nru fwts-21.05.00/fwts-test/wdat-0001/wdat-0001.log fwts-21.06.00/fwts-test/wdat-0001/wdat-0001.log --- fwts-21.05.00/fwts-test/wdat-0001/wdat-0001.log 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/wdat-0001/wdat-0001.log 2021-06-21 05:43:14.000000000 +0000 @@ -2,6 +2,239 @@ wdat ---------------------------------------------------------- wdat Test 1 of 1: WDAT Microsoft Hardware Watchdog Action Table wdat test. +wdat WDAT Microsoft Watchdog Action Table: +wdat Watchdog Header Length: 0x00000020 +wdat PCI Segment: 0x00ff +wdat PCI Bus Number: 0xff +wdat PCI Device Number: 0xff +wdat PCI Function Number: 0xff +wdat Reserved: 0x00000000 +wdat Timer Period: 0x00000258 +wdat Maximum Count: 0x000003ff +wdat Minimum Count: 0x00000002 +wdat Watchdog Flags: 0x81 +wdat Reserved: 0x00000000 +wdat Watchdog Entries 0x00000014 +wdat Watchdog Instruction Entry 1 +wdat Watchdog Action: 0x01 +wdat Instruction Flags: 0x02 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x0000000000000460 +wdat Value: 0x00000000 +wdat Mask: 0x000003ff +wdat Watchdog Instruction Entry 2 +wdat Watchdog Action: 0x04 +wdat Instruction Flags: 0x01 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x0000000000000460 +wdat Value: 0x00000000 +wdat Mask: 0x000003ff +wdat Watchdog Instruction Entry 3 +wdat Watchdog Action: 0x05 +wdat Instruction Flags: 0x01 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x0000000000000472 +wdat Value: 0x00000000 +wdat Mask: 0x000003ff +wdat Watchdog Instruction Entry 4 +wdat Watchdog Action: 0x06 +wdat Instruction Flags: 0x83 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x0000000000000472 +wdat Value: 0x00000000 +wdat Mask: 0x000003ff +wdat Watchdog Instruction Entry 5 +wdat Watchdog Action: 0x08 +wdat Instruction Flags: 0x00 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x0b +wdat Access Size 0x02 +wdat Address 0x0000000000000468 +wdat Value: 0x00000000 +wdat Mask: 0x00000001 +wdat Watchdog Instruction Entry 6 +wdat Watchdog Action: 0x09 +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x0000000000000468 +wdat Value: 0x00000000 +wdat Mask: 0x00000800 +wdat Watchdog Instruction Entry 7 +wdat Watchdog Action: 0x09 +wdat Instruction Flags: 0x02 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000072 +wdat Value: 0x00000045 +wdat Mask: 0x000000ff +wdat Watchdog Instruction Entry 8 +wdat Watchdog Action: 0x09 +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000073 +wdat Value: 0x00000001 +wdat Mask: 0x00000001 +wdat Watchdog Instruction Entry 9 +wdat Watchdog Action: 0x0a +wdat Instruction Flags: 0x00 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x0b +wdat Access Size 0x02 +wdat Address 0x0000000000000468 +wdat Value: 0x00000001 +wdat Mask: 0x00000001 +wdat Watchdog Instruction Entry 10 +wdat Watchdog Action: 0x0b +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x0000000000000468 +wdat Value: 0x00000800 +wdat Mask: 0x00000800 +wdat Watchdog Instruction Entry 11 +wdat Watchdog Action: 0x0b +wdat Instruction Flags: 0x02 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000072 +wdat Value: 0x00000045 +wdat Mask: 0x000000ff +wdat Watchdog Instruction Entry 12 +wdat Watchdog Action: 0x0b +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000073 +wdat Value: 0x00000000 +wdat Mask: 0x00000001 +wdat Watchdog Instruction Entry 13 +wdat Watchdog Action: 0x10 +wdat Instruction Flags: 0x00 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x04 +wdat Access Size 0x01 +wdat Address 0x000000000000046a +wdat Value: 0x00000000 +wdat Mask: 0x00000003 +wdat Watchdog Instruction Entry 14 +wdat Watchdog Action: 0x11 +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x000000000000046a +wdat Value: 0x00000000 +wdat Mask: 0x00000030 +wdat Watchdog Instruction Entry 15 +wdat Watchdog Action: 0x12 +wdat Instruction Flags: 0x00 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x04 +wdat Access Size 0x01 +wdat Address 0x000000000000046a +wdat Value: 0x00000001 +wdat Mask: 0x00000003 +wdat Watchdog Instruction Entry 16 +wdat Watchdog Action: 0x13 +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x000000000000046a +wdat Value: 0x00000010 +wdat Mask: 0x00000030 +wdat Watchdog Instruction Entry 17 +wdat Watchdog Action: 0x20 +wdat Instruction Flags: 0x02 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000072 +wdat Value: 0x00000045 +wdat Mask: 0x000000ff +wdat Watchdog Instruction Entry 18 +wdat Watchdog Action: 0x20 +wdat Instruction Flags: 0x00 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000073 +wdat Value: 0x00000001 +wdat Mask: 0x00000001 +wdat Watchdog Instruction Entry 19 +wdat Watchdog Action: 0x21 +wdat Instruction Flags: 0x02 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000072 +wdat Value: 0x00000045 +wdat Mask: 0x000000ff +wdat Watchdog Instruction Entry 20 +wdat Watchdog Action: 0x21 +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000073 +wdat Value: 0x00000000 +wdat Mask: 0x00000001 wdat PASSED: Test 1, All 20 WDAT Watchdog Instruction Entries wdat look sane. wdat PASSED: Test 1, No issues found in WDAT table. diff -Nru fwts-21.05.00/fwts-test/wdat-0001/wdat-0002.log fwts-21.06.00/fwts-test/wdat-0001/wdat-0002.log --- fwts-21.05.00/fwts-test/wdat-0001/wdat-0002.log 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/fwts-test/wdat-0001/wdat-0002.log 2021-06-21 05:43:14.000000000 +0000 @@ -2,12 +2,35 @@ wdat ---------------------------------------------------------- wdat Test 1 of 1: WDAT Microsoft Hardware Watchdog Action Table wdat test. -wdat FAILED [MEDIUM] WDATReservedFieldsNonZero: Test 1, WDAT -wdat Reserved Fields contain a non-zero value, these all should -wdat be zero. +wdat WDAT Microsoft Watchdog Action Table: +wdat Watchdog Header Length: 0x00000020 +wdat PCI Segment: 0x00ff +wdat PCI Bus Number: 0xff +wdat PCI Device Number: 0xff +wdat PCI Function Number: 0xff +wdat Reserved: 0x00302010 +wdat FAILED [MEDIUM] WDATReservedNonZero: Test 1, WDAT +wdat Reserved1 field must be zero, got 0x00302010 instead +wdat Timer Period: 0x00000258 +wdat Maximum Count: 0x000003ff +wdat Minimum Count: 0x00000409 +wdat Watchdog Flags: 0x81 +wdat Reserved: 0x00000000 +wdat Watchdog Entries 0x00000014 wdat FAILED [MEDIUM] WDATMinGreaterThanMax: Test 1, WDAT wdat Minimum Count is 0x409 and is greater than the Maximum wdat Count of 0x3ff +wdat Watchdog Instruction Entry 1 +wdat Watchdog Action: 0x07 +wdat Instruction Flags: 0x46 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x0000000000000460 +wdat Value: 0x00000000 +wdat Mask: 0x000003ff wdat FAILED [HIGH] WDATWatchdogActionInvalid: Test 1, WDAT wdat Watchdog Instruction Entry 1 Watchdog Action field is 0x7 wdat and should be one of 0x00, 0x04, 0x05, 0x06, 0x08, 0x09, @@ -16,6 +39,215 @@ wdat Watchdog Instruction Entry 1 Instruction Flags field is wdat 0x46 and should be one of 0x00, 0x01, 0x02, 0x03 or 0x80, wdat 0x81, 0x82, 0x83 +wdat Watchdog Instruction Entry 2 +wdat Watchdog Action: 0x04 +wdat Instruction Flags: 0x01 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x0000000000000460 +wdat Value: 0x00000000 +wdat Mask: 0x000003ff +wdat Watchdog Instruction Entry 3 +wdat Watchdog Action: 0x05 +wdat Instruction Flags: 0x01 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x0000000000000472 +wdat Value: 0x00000000 +wdat Mask: 0x000003ff +wdat Watchdog Instruction Entry 4 +wdat Watchdog Action: 0x06 +wdat Instruction Flags: 0x83 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x0000000000000472 +wdat Value: 0x00000000 +wdat Mask: 0x000003ff +wdat Watchdog Instruction Entry 5 +wdat Watchdog Action: 0x08 +wdat Instruction Flags: 0x00 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x0b +wdat Access Size 0x02 +wdat Address 0x0000000000000468 +wdat Value: 0x00000000 +wdat Mask: 0x00000001 +wdat Watchdog Instruction Entry 6 +wdat Watchdog Action: 0x09 +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x0000000000000468 +wdat Value: 0x00000000 +wdat Mask: 0x00000800 +wdat Watchdog Instruction Entry 7 +wdat Watchdog Action: 0x09 +wdat Instruction Flags: 0x02 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000072 +wdat Value: 0x00000045 +wdat Mask: 0x000000ff +wdat Watchdog Instruction Entry 8 +wdat Watchdog Action: 0x09 +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000073 +wdat Value: 0x00000001 +wdat Mask: 0x00000001 +wdat Watchdog Instruction Entry 9 +wdat Watchdog Action: 0x0a +wdat Instruction Flags: 0x00 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x0b +wdat Access Size 0x02 +wdat Address 0x0000000000000468 +wdat Value: 0x00000001 +wdat Mask: 0x00000001 +wdat Watchdog Instruction Entry 10 +wdat Watchdog Action: 0x0b +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x0000000000000468 +wdat Value: 0x00000800 +wdat Mask: 0x00000800 +wdat Watchdog Instruction Entry 11 +wdat Watchdog Action: 0x0b +wdat Instruction Flags: 0x02 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000072 +wdat Value: 0x00000045 +wdat Mask: 0x000000ff +wdat Watchdog Instruction Entry 12 +wdat Watchdog Action: 0x0b +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000073 +wdat Value: 0x00000000 +wdat Mask: 0x00000001 +wdat Watchdog Instruction Entry 13 +wdat Watchdog Action: 0x10 +wdat Instruction Flags: 0x00 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x04 +wdat Access Size 0x01 +wdat Address 0x000000000000046a +wdat Value: 0x00000000 +wdat Mask: 0x00000003 +wdat Watchdog Instruction Entry 14 +wdat Watchdog Action: 0x11 +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x000000000000046a +wdat Value: 0x00000000 +wdat Mask: 0x00000030 +wdat Watchdog Instruction Entry 15 +wdat Watchdog Action: 0x12 +wdat Instruction Flags: 0x00 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x04 +wdat Access Size 0x01 +wdat Address 0x000000000000046a +wdat Value: 0x00000001 +wdat Mask: 0x00000003 +wdat Watchdog Instruction Entry 16 +wdat Watchdog Action: 0x13 +wdat Instruction Flags: 0x82 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x10 +wdat Register Bit Offset 0x00 +wdat Access Size 0x02 +wdat Address 0x000000000000046a +wdat Value: 0x00000010 +wdat Mask: 0x00000030 +wdat Watchdog Instruction Entry 17 +wdat Watchdog Action: 0x20 +wdat Instruction Flags: 0x02 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000072 +wdat Value: 0x00000045 +wdat Mask: 0x000000ff +wdat Watchdog Instruction Entry 18 +wdat Watchdog Action: 0x20 +wdat Instruction Flags: 0x00 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000073 +wdat Value: 0x00000001 +wdat Mask: 0x00000001 +wdat Watchdog Instruction Entry 19 +wdat Watchdog Action: 0x21 +wdat Instruction Flags: 0x02 +wdat Reserved: 0x0000 +wdat Address Space ID: 0x01 +wdat Register Bit Width 0x08 +wdat Register Bit Offset 0x00 +wdat Access Size 0x01 +wdat Address 0x0000000000000072 +wdat Value: 0x00000045 +wdat Mask: 0x000000ff +wdat Watchdog Instruction Entry 20 +wdat Watchdog Action: 0xff +wdat Instruction Flags: 0xff +wdat Reserved: 0x0000 +wdat Address Space ID: 0xff +wdat Register Bit Width 0xff +wdat Register Bit Offset 0x00 +wdat Access Size 0xff +wdat Address 0x0000000000000073 +wdat Value: 0x00000000 +wdat Mask: 0x00000001 wdat FAILED [HIGH] WDATWatchdogActionInvalid: Test 1, WDAT wdat Watchdog Instruction Entry 20 Watchdog Action field is wdat 0xff and should be one of 0x00, 0x04, 0x05, 0x06, 0x08, diff -Nru fwts-21.05.00/live-image/fwts-frontend-text fwts-21.06.00/live-image/fwts-frontend-text --- fwts-21.05.00/live-image/fwts-frontend-text 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/live-image/fwts-frontend-text 2021-06-21 05:43:14.000000000 +0000 @@ -99,7 +99,7 @@ # # Discover available tests # - fwts --batch --batch-experimental --uefitests --unsafe --show-tests | grep "^ "| sort | uniq > $OPTIONS + fwts --batch --batch-experimental --uefitests --unsafe --utils --show-tests | grep "^ "| sort | uniq > $OPTIONS while read test text do ((x++)) @@ -373,13 +373,15 @@ "Abort" "Abort Testing" off \ 2> $OPTIONS ;; - *) + aarch64) dialog --help-button --backtitle "$FWTS" --title "Select Tests" --radiolist \ "This will run a suite of firmware tests that will check the BIOS and ACPI tables. It can also find issues that can cause Linux problems.\n\nThe default below is to run just all the Batch Tests, but you can select more tests below if required.\n\nPlease select below (using cursor up/down and space) and press enter to continue."\ 24 70 8 \ "All" "All Batch Tests" on \ "ACPI" "ACPI Tests" off \ "UEFI" "UEFI Tests" off \ + "TPM" "TPM Tests" off \ + "EBBR" "ARM EBBR Tests" off \ "SBBR" "ARM SBBR Tests" off \ "Recommended" "Recommended Tests" off \ "Recommended for IFV" "Recommended Tests for F/W Vendors" off \ @@ -388,6 +390,21 @@ "Abort" "Abort Testing" off \ 2> $OPTIONS ;; + *) + dialog --help-button --backtitle "$FWTS" --title "Select Tests" --radiolist \ + "This will run a suite of firmware tests that will check the BIOS and ACPI tables. It can also find issues that can cause Linux problems.\n\nThe default below is to run just all the Batch Tests, but you can select more tests below if required.\n\nPlease select below (using cursor up/down and space) and press enter to continue."\ + 24 70 8 \ + "All" "All Batch Tests" on \ + "ACPI" "ACPI Tests" off \ + "UEFI" "UEFI Tests" off \ + "TPM" "TPM Tests" off \ + "Recommended" "Recommended Tests" off \ + "Recommended for IFV" "Recommended Tests for F/W Vendors" off \ + "Selected" "Select Individual Tests" off \ + "Automated" "Create Auto-Tests" off \ + "Abort" "Abort Testing" off \ + 2> $OPTIONS + ;; esac @@ -401,22 +418,30 @@ FWTS_OPTIONS="--batch" ;; *) - FWTS_OPTIONS="--batch --uefitests --skip-test=s3,s4" + FWTS_OPTIONS="--batch --uefitests" ;; esac do_test "${FWTS_OPTIONS}" 'Running Batch Tests' done_tests_finish ;; 'ACPI') - do_test "--acpitests --skip-test=s3,s4" 'Running ACPI Tests' + do_test "--acpitests" 'Running ACPI Tests' done_tests_finish ;; 'UEFI') - do_test "--uefitests --skip-test=s3,s4" 'Running UEFI Tests' + do_test "--uefitests" 'Running UEFI Tests' + done_tests_finish + ;; + 'TPM') + do_test "tpm2 tpmevlog tpmevlogdump" 'Running TPM Tests' + done_tests_finish + ;; + 'EBBR') + do_test "--ebbr" 'Embedded Base Boot Requirements (EBBR) Tests' done_tests_finish ;; 'SBBR') - do_test "--sbbr --skip-test=s3,s4" 'Server Base Boot Requirements (SBBR) Tests' + do_test "--sbbr" 'Server Base Boot Requirements (SBBR) Tests' done_tests_finish ;; 'Recommended') @@ -424,8 +449,11 @@ ppc*) FWTS_OPTIONS="--batch" ;; + aarch64) + FWTS_OPTIONS="version cpufreq aspm dmicheck klog oops --acpitests --uefitests --log-level=medium" + ;; *) - FWTS_OPTIONS="version cpufreq maxfreq msr mtrr nx virt aspm dmicheck apicedge klog oops --acpitests --uefitests --log-level=medium --skip-test=s3,s4" + FWTS_OPTIONS="version cpufreq maxfreq msr mtrr nx virt aspm dmicheck apicedge klog oops --acpitests --uefitests --log-level=medium" ;; esac @@ -433,7 +461,15 @@ done_tests_finish ;; 'Recommended for IFV') - FWTS_OPTIONS="version cpufreq maxfreq msr mtrr nx virt aspm dmicheck apicedge klog oops --acpitests --uefitests --ifv --skip-test=s3,s4" + case "${UNAME_PLATFORM}" in + aarch64) + FWTS_OPTIONS="version cpufreq aspm dmicheck klog oops --acpitests --uefitests --ifv" + ;; + *) + FWTS_OPTIONS="version cpufreq maxfreq msr mtrr nx virt aspm dmicheck apicedge klog oops --acpitests --uefitests --ifv" + ;; + esac + do_test "${FWTS_OPTIONS}" 'Running Recommended Tests for F/W Vendors' done_tests_finish ;; diff -Nru fwts-21.05.00/snapcraft.yaml fwts-21.06.00/snapcraft.yaml --- fwts-21.05.00/snapcraft.yaml 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/snapcraft.yaml 2021-06-21 05:43:14.000000000 +0000 @@ -1,11 +1,19 @@ name: fwts -version: V21.05.00 +version: V21.06.00 summary: The Firmware Test Suite (FWTS) description: This is a firmware test suite that performs sanity checks on system firmware. It is intended to identify BIOS and ACPI errors and if appropriate it will try to explain the errors and give advice to help workaround or fix firmware bugs. It is primarily intended to be a Linux-centric firmware troubleshooting tool. confinement: strict base: core18 grade: stable +architectures: + - build-on: s390x + - build-on: ppc64el + - build-on: arm64 + - build-on: armhf + - build-on: amd64 + - build-on: i386 + parts: fwts: plugin: autotools diff -Nru fwts-21.05.00/src/acpi/acpiinfo/acpiinfo.c fwts-21.06.00/src/acpi/acpiinfo/acpiinfo.c --- fwts-21.05.00/src/acpi/acpiinfo/acpiinfo.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/acpiinfo/acpiinfo.c 2021-06-21 05:43:14.000000000 +0000 @@ -167,6 +167,6 @@ .minor_tests = acpiinfo_tests }; -FWTS_REGISTER("acpiinfo", &acpiinfo_ops, FWTS_TEST_EARLY, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("acpiinfo", &acpiinfo_ops, FWTS_TEST_EARLY, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/acpitables/acpitables.c fwts-21.06.00/src/acpi/acpitables/acpitables.c --- fwts-21.05.00/src/acpi/acpitables/acpitables.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/acpitables/acpitables.c 2021-06-21 05:43:14.000000000 +0000 @@ -323,6 +323,6 @@ }; FWTS_REGISTER("acpitables", &acpi_table_check_ops, FWTS_TEST_ANYTIME, - FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI | FWTS_FLAG_TEST_SBBR) + FWTS_FLAG_BATCH | FWTS_FLAG_ACPI | FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/acpi/apicinstance/apicinstance.c fwts-21.06.00/src/acpi/apicinstance/apicinstance.c --- fwts-21.05.00/src/acpi/apicinstance/apicinstance.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/apicinstance/apicinstance.c 2021-06-21 05:43:14.000000000 +0000 @@ -82,6 +82,6 @@ .minor_tests = apicinstance_tests }; -FWTS_REGISTER("apicinstance", &apicinstance_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("apicinstance", &apicinstance_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/asf/asf.c fwts-21.06.00/src/acpi/asf/asf.c --- fwts-21.05.00/src/acpi/asf/asf.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/asf/asf.c 2021-06-21 05:43:14.000000000 +0000 @@ -540,6 +540,6 @@ .minor_tests = asf_tests }; -FWTS_REGISTER("asf", &asf_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("asf", &asf_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/aspt/aspt.c fwts-21.06.00/src/acpi/aspt/aspt.c --- fwts-21.05.00/src/acpi/aspt/aspt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/aspt/aspt.c 2021-06-21 05:43:14.000000000 +0000 @@ -87,6 +87,6 @@ .minor_tests = aspt_tests }; -FWTS_REGISTER("aspt", &aspt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("aspt", &aspt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/bert/bert.c fwts-21.06.00/src/acpi/bert/bert.c --- fwts-21.05.00/src/acpi/bert/bert.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/bert/bert.c 2021-06-21 05:43:14.000000000 +0000 @@ -179,6 +179,6 @@ .minor_tests = bert_tests }; -FWTS_REGISTER("bert", &bert_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("bert", &bert_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/bgrt/bgrt.c fwts-21.06.00/src/acpi/bgrt/bgrt.c --- fwts-21.05.00/src/acpi/bgrt/bgrt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/bgrt/bgrt.c 2021-06-21 05:43:14.000000000 +0000 @@ -67,6 +67,6 @@ .minor_tests = bgrt_tests }; -FWTS_REGISTER("bgrt", &bgrt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("bgrt", &bgrt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/boot/boot.c fwts-21.06.00/src/acpi/boot/boot.c --- fwts-21.05.00/src/acpi/boot/boot.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/boot/boot.c 2021-06-21 05:43:14.000000000 +0000 @@ -36,7 +36,7 @@ return FWTS_ERROR; } if (fwts_firmware_detect() == FWTS_FIRMWARE_UEFI) { - fwts_log_error(fw, "ACPI BOOT table is depreciated on UEFI firmware, skipping test"); + fwts_log_error(fw, "ACPI BOOT table is deprecated on UEFI firmware, skipping test"); return FWTS_SKIP; } if (table == NULL || (table && table->length == 0)) { @@ -107,6 +107,6 @@ .minor_tests = boot_tests }; -FWTS_REGISTER("boot", &boot_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("boot", &boot_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/brightness/brightness-helper.c fwts-21.06.00/src/acpi/brightness/brightness-helper.c --- fwts-21.05.00/src/acpi/brightness/brightness-helper.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/brightness/brightness-helper.c 2021-06-21 05:43:14.000000000 +0000 @@ -18,8 +18,6 @@ */ #include "fwts.h" -#if defined(FWTS_HAS_ACPI) - #include "brightness-helper.h" #include @@ -145,5 +143,3 @@ return FWTS_OK; } - -#endif diff -Nru fwts-21.05.00/src/acpi/checksum/checksum.c fwts-21.06.00/src/acpi/checksum/checksum.c --- fwts-21.05.00/src/acpi/checksum/checksum.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/checksum/checksum.c 2021-06-21 05:43:14.000000000 +0000 @@ -157,6 +157,6 @@ .minor_tests = checksum_tests }; -FWTS_REGISTER("checksum", &checksum_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("checksum", &checksum_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/cpep/cpep.c fwts-21.06.00/src/acpi/cpep/cpep.c --- fwts-21.05.00/src/acpi/cpep/cpep.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/cpep/cpep.c 2021-06-21 05:43:14.000000000 +0000 @@ -101,6 +101,6 @@ .minor_tests = cpep_tests }; -FWTS_REGISTER("cpep", &cpep_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("cpep", &cpep_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/csrt/csrt.c fwts-21.06.00/src/acpi/csrt/csrt.c --- fwts-21.05.00/src/acpi/csrt/csrt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/csrt/csrt.c 2021-06-21 05:43:14.000000000 +0000 @@ -231,6 +231,6 @@ .minor_tests = csrt_tests }; -FWTS_REGISTER("csrt", &csrt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("csrt", &csrt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/cstates/cstates.c fwts-21.06.00/src/acpi/cstates/cstates.c --- fwts-21.05.00/src/acpi/cstates/cstates.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/cstates/cstates.c 2021-06-21 05:43:14.000000000 +0000 @@ -255,6 +255,6 @@ .minor_tests = cstates_tests }; -FWTS_REGISTER("cstates", &cstates_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("cstates", &cstates_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/dbg2/dbg2.c fwts-21.06.00/src/acpi/dbg2/dbg2.c --- fwts-21.05.00/src/acpi/dbg2/dbg2.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/dbg2/dbg2.c 2021-06-21 05:43:14.000000000 +0000 @@ -33,33 +33,13 @@ #define SBBR_DBG2_ARM_PL011_UART 0x0003 static fwts_acpi_table_info *table; - -static int dbg2_init(fwts_framework *fw) -{ - if (fwts_acpi_find_table(fw, "DBG2", 0, &table) != FWTS_OK) { - fwts_log_error(fw, "Cannot read ACPI tables."); - return FWTS_ERROR; - } - if (table == NULL || (table && table->length == 0)) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) { - fwts_log_error(fw, - "ACPI DBG2 table does not exist"); - return FWTS_ERROR; - } else { - fwts_log_error(fw, - "ACPI DBG2 table does not exist, skipping test"); - return FWTS_SKIP; - } - } - - return FWTS_OK; -} +acpi_table_init(DBG2, &table) static int dbg2_test2(fwts_framework *fw) { uint32_t i; - if (!(fw->flags & FWTS_FLAG_TEST_SBBR)) + if (!(fw->flags & FWTS_FLAG_SBBR)) return FWTS_SKIP; fwts_acpi_table_dbg2 *dbg2 = (fwts_acpi_table_dbg2 *)table->data; @@ -385,10 +365,10 @@ static fwts_framework_ops dbg2_ops = { .description = "DBG2 (Debug Port Table 2) test.", - .init = dbg2_init, + .init = DBG2_init, .minor_tests = dbg2_tests }; -FWTS_REGISTER("dbg2", &dbg2_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI | FWTS_FLAG_TEST_SBBR) +FWTS_REGISTER("dbg2", &dbg2_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI | FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/acpi/dbgp/dbgp.c fwts-21.06.00/src/acpi/dbgp/dbgp.c --- fwts-21.05.00/src/acpi/dbgp/dbgp.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/dbgp/dbgp.c 2021-06-21 05:43:14.000000000 +0000 @@ -119,6 +119,6 @@ .minor_tests = dbgp_tests }; -FWTS_REGISTER("dbgp", &dbgp_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("dbgp", &dbgp_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/devices/ac_adapter/ac.c fwts-21.06.00/src/acpi/devices/ac_adapter/ac.c --- fwts-21.05.00/src/acpi/devices/ac_adapter/ac.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/devices/ac_adapter/ac.c 2021-06-21 05:43:14.000000000 +0000 @@ -288,6 +288,6 @@ .minor_tests = acpi_ac_tests }; -FWTS_REGISTER("acpi_ac", &acpi_ac_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("acpi_ac", &acpi_ac_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/devices/battery/battery.c fwts-21.06.00/src/acpi/devices/battery/battery.c --- fwts-21.05.00/src/acpi/devices/battery/battery.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/devices/battery/battery.c 2021-06-21 05:43:14.000000000 +0000 @@ -402,6 +402,6 @@ .minor_tests = acpi_battery_tests }; -FWTS_REGISTER("acpi_battery", &acpi_battery_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("acpi_battery", &acpi_battery_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/devices/battery/smart_battery.c fwts-21.06.00/src/acpi/devices/battery/smart_battery.c --- fwts-21.05.00/src/acpi/devices/battery/smart_battery.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/devices/battery/smart_battery.c 2021-06-21 05:43:14.000000000 +0000 @@ -217,6 +217,6 @@ .minor_tests = smart_battery_tests }; -FWTS_REGISTER("smart_battery", &smart_battery_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("smart_battery", &smart_battery_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/devices/buttons/power_button.c fwts-21.06.00/src/acpi/devices/buttons/power_button.c --- fwts-21.05.00/src/acpi/devices/buttons/power_button.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/devices/buttons/power_button.c 2021-06-21 05:43:14.000000000 +0000 @@ -198,6 +198,6 @@ .minor_tests = power_button_tests }; -FWTS_REGISTER("acpi_pwrb", &power_button_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("acpi_pwrb", &power_button_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/devices/buttons/sleep_button.c fwts-21.06.00/src/acpi/devices/buttons/sleep_button.c --- fwts-21.05.00/src/acpi/devices/buttons/sleep_button.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/devices/buttons/sleep_button.c 2021-06-21 05:43:14.000000000 +0000 @@ -170,6 +170,6 @@ .minor_tests = sleep_button_tests }; -FWTS_REGISTER("acpi_slpb", &sleep_button_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("acpi_slpb", &sleep_button_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/devices/ec/ec.c fwts-21.06.00/src/acpi/devices/ec/ec.c --- fwts-21.05.00/src/acpi/devices/ec/ec.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/devices/ec/ec.c 2021-06-21 05:43:14.000000000 +0000 @@ -281,6 +281,6 @@ .minor_tests = acpi_ec_tests }; -FWTS_REGISTER("acpi_ec", &acpi_ec_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("acpi_ec", &acpi_ec_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/devices/lid/lid.c fwts-21.06.00/src/acpi/devices/lid/lid.c --- fwts-21.05.00/src/acpi/devices/lid/lid.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/devices/lid/lid.c 2021-06-21 05:43:14.000000000 +0000 @@ -287,6 +287,6 @@ .minor_tests = acpi_lid_tests }; -FWTS_REGISTER("acpi_lid", &acpi_lid_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("acpi_lid", &acpi_lid_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/devices/nvdimm/nvdimm.c fwts-21.06.00/src/acpi/devices/nvdimm/nvdimm.c --- fwts-21.05.00/src/acpi/devices/nvdimm/nvdimm.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/devices/nvdimm/nvdimm.c 2021-06-21 05:43:14.000000000 +0000 @@ -140,6 +140,6 @@ .minor_tests = acpi_nvdimm_tests }; -FWTS_REGISTER("acpi_nvdimm", &acpi_nvdimm_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("acpi_nvdimm", &acpi_nvdimm_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/devices/sensor/als.c fwts-21.06.00/src/acpi/devices/sensor/als.c --- fwts-21.05.00/src/acpi/devices/sensor/als.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/devices/sensor/als.c 2021-06-21 05:43:14.000000000 +0000 @@ -264,6 +264,6 @@ .minor_tests = ambient_light_tests }; -FWTS_REGISTER("acpi_als", &ambient_light_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("acpi_als", &ambient_light_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/devices/time/time.c fwts-21.06.00/src/acpi/devices/time/time.c --- fwts-21.05.00/src/acpi/devices/time/time.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/devices/time/time.c 2021-06-21 05:43:14.000000000 +0000 @@ -406,6 +406,6 @@ .minor_tests = acpi_time_alarm_tests }; -FWTS_REGISTER("acpi_time", &acpi_time_alarm_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("acpi_time", &acpi_time_alarm_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/devices/wpc/wpc.c fwts-21.06.00/src/acpi/devices/wpc/wpc.c --- fwts-21.05.00/src/acpi/devices/wpc/wpc.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/devices/wpc/wpc.c 2021-06-21 05:43:14.000000000 +0000 @@ -206,6 +206,6 @@ .minor_tests = acpi_wpc_tests }; -FWTS_REGISTER("acpi_wpc", &acpi_wpc_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("acpi_wpc", &acpi_wpc_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/dmar/dmar.c fwts-21.06.00/src/acpi/dmar/dmar.c --- fwts-21.05.00/src/acpi/dmar/dmar.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/dmar/dmar.c 2021-06-21 05:43:14.000000000 +0000 @@ -335,6 +335,6 @@ .minor_tests = dmar_tests }; -FWTS_REGISTER("dmar", &dmar_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI | FWTS_FLAG_ROOT_PRIV) +FWTS_REGISTER("dmar", &dmar_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI | FWTS_FLAG_ROOT_PRIV) #endif diff -Nru fwts-21.05.00/src/acpi/dppt/dppt.c fwts-21.06.00/src/acpi/dppt/dppt.c --- fwts-21.05.00/src/acpi/dppt/dppt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/dppt/dppt.c 2021-06-21 05:43:14.000000000 +0000 @@ -55,6 +55,6 @@ .minor_tests = dppt_tests }; -FWTS_REGISTER("dppt", &dppt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("dppt", &dppt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/drtm/drtm.c fwts-21.06.00/src/acpi/drtm/drtm.c --- fwts-21.05.00/src/acpi/drtm/drtm.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/drtm/drtm.c 2021-06-21 05:43:14.000000000 +0000 @@ -145,6 +145,6 @@ .minor_tests = drtm_tests }; -FWTS_REGISTER("drtm", &drtm_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("drtm", &drtm_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/ecdt/ecdt.c fwts-21.06.00/src/acpi/ecdt/ecdt.c --- fwts-21.05.00/src/acpi/ecdt/ecdt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/ecdt/ecdt.c 2021-06-21 05:43:14.000000000 +0000 @@ -186,6 +186,6 @@ .minor_tests = ecdt_tests }; -FWTS_REGISTER("ecdt", &ecdt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("ecdt", &ecdt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/einj/einj.c fwts-21.06.00/src/acpi/einj/einj.c --- fwts-21.05.00/src/acpi/einj/einj.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/einj/einj.c 2021-06-21 05:43:14.000000000 +0000 @@ -123,7 +123,6 @@ .minor_tests = einj_tests }; -FWTS_REGISTER("einj", &einj_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | - FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("einj", &einj_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/erst/erst.c fwts-21.06.00/src/acpi/erst/erst.c --- fwts-21.05.00/src/acpi/erst/erst.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/erst/erst.c 2021-06-21 05:43:14.000000000 +0000 @@ -173,6 +173,6 @@ .minor_tests = erst_tests }; -FWTS_REGISTER("erst", &erst_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("erst", &erst_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/facs/facs.c fwts-21.06.00/src/acpi/facs/facs.c --- fwts-21.05.00/src/acpi/facs/facs.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/facs/facs.c 2021-06-21 05:43:14.000000000 +0000 @@ -145,6 +145,6 @@ .minor_tests = facs_tests }; -FWTS_REGISTER("facs", &facs_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("facs", &facs_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/fadt/fadt.c fwts-21.06.00/src/acpi/fadt/fadt.c --- fwts-21.05.00/src/acpi/fadt/fadt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/fadt/fadt.c 2021-06-21 05:43:14.000000000 +0000 @@ -1855,6 +1855,5 @@ }; FWTS_REGISTER("fadt", &fadt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | - FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_TEST_ACPI | - FWTS_FLAG_TEST_COMPLIANCE_ACPI) + FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_ACPI | FWTS_FLAG_COMPLIANCE_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/fpdt/fpdt.c fwts-21.06.00/src/acpi/fpdt/fpdt.c --- fwts-21.05.00/src/acpi/fpdt/fpdt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/fpdt/fpdt.c 2021-06-21 05:43:14.000000000 +0000 @@ -194,6 +194,6 @@ .minor_tests = fpdt_tests }; -FWTS_REGISTER("fpdt", &fpdt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("fpdt", &fpdt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/gtdt/gtdt.c fwts-21.06.00/src/acpi/gtdt/gtdt.c --- fwts-21.05.00/src/acpi/gtdt/gtdt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/gtdt/gtdt.c 2021-06-21 05:43:14.000000000 +0000 @@ -27,24 +27,7 @@ #include static fwts_acpi_table_info *table; - -static int gtdt_init(fwts_framework *fw) -{ - if (fwts_acpi_find_table(fw, "GTDT", 0, &table) != FWTS_OK) { - fwts_log_error(fw, "Cannot read ACPI tables."); - return FWTS_ERROR; - } - if (table == NULL || (table && table->length == 0)) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) { - fwts_log_error(fw, "ACPI GTDT table does not exist"); - return FWTS_ERROR; - } else { - fwts_log_error(fw, "ACPI GTDT table does not exist, skipping test"); - return FWTS_SKIP; - } - } - return FWTS_OK; -} +acpi_table_init(GTDT, &table) /* * GTDT Generic Timer Description Table @@ -272,10 +255,10 @@ static fwts_framework_ops gtdt_ops = { .description = "GTDT Generic Timer Description Table test.", - .init = gtdt_init, + .init = GTDT_init, .minor_tests = gtdt_tests }; -FWTS_REGISTER("gtdt", >dt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI | FWTS_FLAG_TEST_SBBR) +FWTS_REGISTER("gtdt", >dt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI | FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/acpi/hest/hest.c fwts-21.06.00/src/acpi/hest/hest.c --- fwts-21.05.00/src/acpi/hest/hest.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/hest/hest.c 2021-06-21 05:43:14.000000000 +0000 @@ -892,6 +892,6 @@ .minor_tests = hest_tests }; -FWTS_REGISTER("hest", &hest_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("hest", &hest_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/hmat/hmat.c fwts-21.06.00/src/acpi/hmat/hmat.c --- fwts-21.05.00/src/acpi/hmat/hmat.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/hmat/hmat.c 2021-06-21 05:43:14.000000000 +0000 @@ -26,7 +26,10 @@ static fwts_acpi_table_info *table; acpi_table_init(HMAT, &table) -static void hmat_proximity_domain_test(fwts_framework *fw, const fwts_acpi_table_hmat_proximity_domain *entry, bool *passed) +static void hmat_proximity_domain_test( + fwts_framework *fw, + const fwts_acpi_table_hmat_proximity_domain *entry, + bool *passed) { fwts_log_info_verbatim(fw, " Memory Proximity Domain Attributes (Type 0):"); fwts_log_info_simp_int(fw, " Type: ", entry->header.type); @@ -48,7 +51,10 @@ fwts_acpi_reserved_zero("HMAT", "Reserved", entry->reserved4, passed); } -static void hmat_locality_test(fwts_framework *fw, const fwts_acpi_table_hmat_locality *entry, bool *passed) +static void hmat_locality_test( + fwts_framework *fw, + const fwts_acpi_table_hmat_locality *entry, + bool *passed) { uint32_t pd_size; uint16_t reserved1 = (entry->reserved1 << 8) + entry->min_transfer_size; @@ -103,7 +109,10 @@ } } -static void hmat_cache_test(fwts_framework *fw, const fwts_acpi_table_hmat_cache *entry, bool *passed) +static void hmat_cache_test( + fwts_framework *fw, + const fwts_acpi_table_hmat_cache *entry, + bool *passed) { fwts_log_info_verbatim(fw, " Memory Side Cache Information (Type 2):"); fwts_log_info_simp_int(fw, " Type: ", entry->header.type); @@ -217,6 +226,6 @@ .minor_tests = hmat_tests }; -FWTS_REGISTER("hmat", &hmat_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("hmat", &hmat_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/hpet/hpet.c fwts-21.06.00/src/acpi/hpet/hpet.c --- fwts-21.05.00/src/acpi/hpet/hpet.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/hpet/hpet.c 2021-06-21 05:43:14.000000000 +0000 @@ -476,6 +476,6 @@ }; FWTS_REGISTER("hpet", &hpet_check_ops, FWTS_TEST_ANYTIME, - FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_TEST_ACPI) + FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/iort/iort.c fwts-21.06.00/src/acpi/iort/iort.c --- fwts-21.05.00/src/acpi/iort/iort.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/iort/iort.c 2021-06-21 05:43:14.000000000 +0000 @@ -715,6 +715,6 @@ .minor_tests = iort_tests }; -FWTS_REGISTER("iort", &iort_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("iort", &iort_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/lpit/lpit.c fwts-21.06.00/src/acpi/lpit/lpit.c --- fwts-21.05.00/src/acpi/lpit/lpit.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/lpit/lpit.c 2021-06-21 05:43:14.000000000 +0000 @@ -221,6 +221,6 @@ .minor_tests = lpit_tests }; -FWTS_REGISTER("lpit", &lpit_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("lpit", &lpit_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/madt/madt.c fwts-21.06.00/src/acpi/madt/madt.c --- fwts-21.05.00/src/acpi/madt/madt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/madt/madt.c 2021-06-21 05:43:14.000000000 +0000 @@ -385,7 +385,7 @@ fadt_major = fadt->header.revision; fadt_minor = 0; - if (fw->flags & FWTS_FLAG_TEST_SBBR) { + if (fw->flags & FWTS_FLAG_SBBR) { if (fadt_major < SBBR_ACPI_MAJOR_VERSION) { fwts_log_error(fw, "SBBR support starts with ACPI v6.0," " Current revision is outdated: %" PRIu8 ".%" PRIu8, @@ -567,7 +567,10 @@ }; /* check flags points to Table 5-48 Local APIC Flags */ -static void check_madt_apic_flags(fwts_framework *fw, uint8_t type, uint32_t flags) +static void check_madt_apic_flags( + fwts_framework *fw, + const uint8_t type, + const uint32_t flags) { fwts_acpi_table_madt *madt = (fwts_acpi_table_madt *) mtable->data; bool passed = true; @@ -1547,7 +1550,7 @@ hdr->type, madt_sub_names[type]); } - if (!(fw->flags & FWTS_FLAG_TEST_SBBR)) { + if (!(fw->flags & FWTS_FLAG_SBBR)) { bool passed = true; /* verify that the length is what we expect */ @@ -1698,7 +1701,7 @@ length -= skip; } - if (!(fw->flags & FWTS_FLAG_TEST_SBBR)) { + if (!(fw->flags & FWTS_FLAG_SBBR)) { /* run comparison tests */ madt_ioapic_sapic_compare(fw, num_ioapics, num_iosapics); } @@ -1734,6 +1737,6 @@ .minor_tests = madt_tests }; -FWTS_REGISTER("madt", &madt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI | FWTS_FLAG_TEST_COMPLIANCE_ACPI | FWTS_FLAG_TEST_SBBR) +FWTS_REGISTER("madt", &madt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI | FWTS_FLAG_COMPLIANCE_ACPI | FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/acpi/mcfg/mcfg.c fwts-21.06.00/src/acpi/mcfg/mcfg.c --- fwts-21.05.00/src/acpi/mcfg/mcfg.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/mcfg/mcfg.c 2021-06-21 05:43:14.000000000 +0000 @@ -252,6 +252,7 @@ .minor_tests = mcfg_tests }; -FWTS_REGISTER("mcfg", &mcfg_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("mcfg", &mcfg_ops, FWTS_TEST_ANYTIME, + FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_ACPI | FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/acpi/mchi/mchi.c fwts-21.06.00/src/acpi/mchi/mchi.c --- fwts-21.05.00/src/acpi/mchi/mchi.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/mchi/mchi.c 2021-06-21 05:43:14.000000000 +0000 @@ -209,6 +209,6 @@ .minor_tests = mchi_tests }; -FWTS_REGISTER("mchi", &mchi_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("mchi", &mchi_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/method/method.c fwts-21.06.00/src/acpi/method/method.c --- fwts-21.05.00/src/acpi/method/method.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/method/method.c 2021-06-21 05:43:14.000000000 +0000 @@ -566,7 +566,7 @@ static int method_test_AEI(fwts_framework *fw) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) return method_evaluate_method(fw, METHOD_MANDATORY, "_AEI", NULL, 0, method_test_AEI_return, NULL); else @@ -655,7 +655,7 @@ int ret; /* Only test the _EVT method with pins defined in AEI. */ - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) ret = method_evaluate_method(fw, METHOD_MANDATORY | METHOD_SILENT, "_AEI", NULL, 0, method_test_EVT_return, NULL); else @@ -761,7 +761,7 @@ static int method_test_HID(fwts_framework *fw) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) return method_evaluate_method(fw, METHOD_MANDATORY, "_HID", NULL, 0, fwts_method_test_HID_return, NULL); else @@ -812,7 +812,7 @@ static int method_test_UID(fwts_framework *fw) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) return method_evaluate_method(fw, METHOD_MANDATORY, "_UID", NULL, 0, fwts_method_test_UID_return, NULL); else @@ -1109,7 +1109,7 @@ /* Section 6.2.17 _CCA */ static int method_test_CCA(fwts_framework *fw) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) return method_evaluate_method(fw, METHOD_MANDATORY, "_CCA", NULL, 0, fwts_method_test_passed_failed_return, "_CCA"); else @@ -1169,7 +1169,7 @@ static int method_test_STA(fwts_framework *fw) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) return method_evaluate_method(fw, METHOD_MANDATORY, "_STA", NULL, 0, fwts_method_test_STA_return, "_STA"); else @@ -2670,7 +2670,7 @@ ret = method_evaluate_method(fw, METHOD_OPTIONAL, "_SST", arg, 1, fwts_method_test_NULL_return, NULL); - if (ret == FWTS_NOT_EXIST && (fw->flags & FWTS_FLAG_TEST_SBBR)) { + if (ret == FWTS_NOT_EXIST && (fw->flags & FWTS_FLAG_SBBR)) { fwts_warning(fw, "_SST method not found. This should be treated as error " "if the platform provides user visible status such as LED."); } @@ -4340,7 +4340,7 @@ static int method_test_ADR(fwts_framework *fw) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) return method_evaluate_method(fw, METHOD_MANDATORY, "_ADR", NULL, 0, fwts_method_test_integer_return, NULL); else @@ -5028,6 +5028,6 @@ }; FWTS_REGISTER("method", &method_ops, FWTS_TEST_ANYTIME, - FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI | FWTS_FLAG_TEST_SBBR) + FWTS_FLAG_BATCH | FWTS_FLAG_ACPI | FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/acpi/mpst/mpst.c fwts-21.06.00/src/acpi/mpst/mpst.c --- fwts-21.05.00/src/acpi/mpst/mpst.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/mpst/mpst.c 2021-06-21 05:43:14.000000000 +0000 @@ -188,6 +188,6 @@ .minor_tests = mpst_tests }; -FWTS_REGISTER("mpst", &mpst_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("mpst", &mpst_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/msct/msct.c fwts-21.06.00/src/acpi/msct/msct.c --- fwts-21.05.00/src/acpi/msct/msct.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/msct/msct.c 2021-06-21 05:43:14.000000000 +0000 @@ -116,6 +116,6 @@ }; FWTS_REGISTER("msct", &msct_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | - FWTS_FLAG_TEST_ACPI) + FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/msdm/msdm.c fwts-21.06.00/src/acpi/msdm/msdm.c --- fwts-21.05.00/src/acpi/msdm/msdm.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/msdm/msdm.c 2021-06-21 05:43:14.000000000 +0000 @@ -134,6 +134,6 @@ .minor_tests = msdm_tests }; -FWTS_REGISTER("msdm", &msdm_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("msdm", &msdm_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/nfit/nfit.c fwts-21.06.00/src/acpi/nfit/nfit.c --- fwts-21.05.00/src/acpi/nfit/nfit.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/nfit/nfit.c 2021-06-21 05:43:14.000000000 +0000 @@ -537,6 +537,6 @@ .minor_tests = nfit_tests }; -FWTS_REGISTER("nfit", &nfit_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("nfit", &nfit_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/pcc/pcc.c fwts-21.06.00/src/acpi/pcc/pcc.c --- fwts-21.05.00/src/acpi/pcc/pcc.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/pcc/pcc.c 2021-06-21 05:43:14.000000000 +0000 @@ -471,6 +471,6 @@ .minor_tests = pcc_tests }; -FWTS_REGISTER("pcc", &pcc_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("pcc", &pcc_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/pcct/pcct.c fwts-21.06.00/src/acpi/pcct/pcct.c --- fwts-21.05.00/src/acpi/pcct/pcct.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/pcct/pcct.c 2021-06-21 05:43:14.000000000 +0000 @@ -26,7 +26,11 @@ static fwts_acpi_table_info *table; acpi_table_init(PCCT, &table) -static bool subspace_length_equal(fwts_framework *fw, uint8_t type, uint8_t type_size, uint8_t length) +static bool subspace_length_equal( + fwts_framework *fw, + const uint8_t type, + const uint8_t type_size, + const uint8_t length) { if (type_size != length) { fwts_failed(fw, LOG_LEVEL_HIGH, @@ -39,7 +43,11 @@ return true; } -static void gas_messages(fwts_framework *fw, uint8_t type, fwts_acpi_gas *gas, bool *passed) +static void gas_messages( + fwts_framework *fw, + const uint8_t type, + const fwts_acpi_gas *gas, + bool *passed) { char label[20]; @@ -56,7 +64,11 @@ FWTS_GAS_ADDR_SPACE_ID_FFH); } -static void gas_messages2(fwts_framework *fw, uint8_t type, fwts_acpi_gas *gas, bool *passed) +static void gas_messages2( + fwts_framework *fw, + const uint8_t type, + const fwts_acpi_gas *gas, + bool *passed) { char label[20]; @@ -71,7 +83,12 @@ FWTS_GAS_ADDR_SPACE_ID_SYSTEM_MEMORY, FWTS_GAS_ADDR_SPACE_ID_SYSTEM_IO); } -static void memory_length(fwts_framework *fw, uint8_t type, uint64_t memory_range, uint64_t min_length, bool *passed) +static void memory_length( + fwts_framework *fw, + const uint8_t type, + const uint64_t memory_range, + const uint64_t min_length, + bool *passed) { switch (type) { case 0 ... 2: @@ -97,7 +114,10 @@ } } -static void generic_comm_test(fwts_framework *fw, fwts_acpi_table_pcct_subspace_type_0 *entry, bool *passed) +static void generic_comm_test( + fwts_framework *fw, + const fwts_acpi_table_pcct_subspace_type_0 *entry, + bool *passed) { uint64_t reserved; @@ -117,7 +137,10 @@ fwts_log_info_simp_int(fw, " Min Request Turnaround Time: ", entry->min_request_turnaround_time); } -static void hw_reduced_comm_test_type1(fwts_framework *fw, fwts_acpi_table_pcct_subspace_type_1 *entry, bool *passed) +static void hw_reduced_comm_test_type1( + fwts_framework *fw, + const fwts_acpi_table_pcct_subspace_type_1 *entry, + bool *passed) { fwts_log_info_simp_int(fw, " Platform Interrupt: ", entry->platform_interrupt); fwts_log_info_simp_int(fw, " Platform Interrupt Flags: ", entry->platform_interrupt_flags); @@ -135,7 +158,10 @@ fwts_acpi_reserved_bits("PCCT", "Platform Interrupt Flags", entry->platform_interrupt_flags, 2, 7, passed); } -static void hw_reduced_comm_test_type2(fwts_framework *fw, fwts_acpi_table_pcct_subspace_type_2 *entry, bool *passed) +static void hw_reduced_comm_test_type2( + fwts_framework *fw, + const fwts_acpi_table_pcct_subspace_type_2 *entry, + bool *passed) { fwts_log_info_simp_int(fw, " Platform Interrupt: ", entry->platform_interrupt); fwts_log_info_simp_int(fw, " Platform Interrupt Flags: ", entry->platform_interrupt_flags); @@ -157,7 +183,10 @@ fwts_acpi_reserved_bits("PCCT", "Platform Interrupt Flags", entry->platform_interrupt_flags, 2, 7, passed); } -static void extended_pcc_test(fwts_framework *fw, fwts_acpi_table_pcct_subspace_type_3_4 *entry, bool *passed) +static void extended_pcc_test( + fwts_framework *fw, + const fwts_acpi_table_pcct_subspace_type_3_4 *entry, + bool *passed) { fwts_log_info_simp_int(fw, " Platform Interrupt: ", entry->platform_interrupt); fwts_log_info_simp_int(fw, " Platform Interrupt Flags: ", entry->platform_interrupt_flags); @@ -190,7 +219,10 @@ fwts_acpi_reserved_bits("PCCT", "Platform Interrupt Flags", entry->platform_interrupt_flags, 2, 7, passed); } -static void hw_registers_based_comm_test(fwts_framework *fw, fwts_acpi_table_pcct_subspace_type_5 *entry, bool *passed) +static void hw_registers_based_comm_test( + fwts_framework *fw, + const fwts_acpi_table_pcct_subspace_type_5 *entry, + bool *passed) { fwts_log_info_simp_int(fw, " Version: ", entry->version); fwts_log_info_simp_int(fw, " Base Address: ", entry->base_address); @@ -333,6 +365,6 @@ .minor_tests = pcct_tests }; -FWTS_REGISTER("pcct", &pcct_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("pcct", &pcct_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/pdtt/pdtt.c fwts-21.06.00/src/acpi/pdtt/pdtt.c --- fwts-21.05.00/src/acpi/pdtt/pdtt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/pdtt/pdtt.c 2021-06-21 05:43:14.000000000 +0000 @@ -94,6 +94,6 @@ .minor_tests = pdtt_tests }; -FWTS_REGISTER("pdtt", &pdtt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("pdtt", &pdtt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/phat/phat.c fwts-21.06.00/src/acpi/phat/phat.c --- fwts-21.05.00/src/acpi/phat/phat.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/phat/phat.c 2021-06-21 05:43:14.000000000 +0000 @@ -26,14 +26,20 @@ static fwts_acpi_table_info *table; acpi_table_init(PHAT, &table) -static void print_record_header(fwts_framework *fw, const fwts_acpi_table_phat_header *header) +static void print_record_header( + fwts_framework *fw, + const fwts_acpi_table_phat_header *header) { fwts_log_info_simp_int(fw, " Type: ", header->type); fwts_log_info_simp_int(fw, " Record Length: ", header->length); fwts_log_info_simp_int(fw, " Revision: ", header->revision); } -static void phat_version_test(fwts_framework *fw, fwts_acpi_table_phat_version *entry, uint32_t offset, bool *passed) +static void phat_version_test( + fwts_framework *fw, + fwts_acpi_table_phat_version *entry, + uint32_t offset, + bool *passed) { uint32_t reserved, i; @@ -69,7 +75,11 @@ fwts_acpi_reserved_zero("PHAT", "Reserved", reserved, passed); } -static void phat_health_test(fwts_framework *fw, fwts_acpi_table_phat_health *entry, uint32_t offset, bool *passed) +static void phat_health_test( + fwts_framework *fw, + fwts_acpi_table_phat_health *entry, + uint32_t offset, + bool *passed) { char *device_path; char guid[37]; @@ -167,6 +177,6 @@ .minor_tests = phat_tests }; -FWTS_REGISTER("phat", &phat_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("phat", &phat_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/pmtt/pmtt.c fwts-21.06.00/src/acpi/pmtt/pmtt.c --- fwts-21.05.00/src/acpi/pmtt/pmtt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/pmtt/pmtt.c 2021-06-21 05:43:14.000000000 +0000 @@ -23,7 +23,8 @@ #include #include -static void pmtt_memory_device(fwts_framework *fw, fwts_acpi_table_pmtt_header *entry, uint32_t offset, bool *passed); +static void pmtt_memory_device(fwts_framework *fw, fwts_acpi_table_pmtt_header *entry, + uint32_t offset, bool *passed); static fwts_acpi_table_info *table; acpi_table_init(PMTT, &table) @@ -225,6 +226,6 @@ .minor_tests = pmtt_tests }; -FWTS_REGISTER("pmtt", &pmtt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("pmtt", &pmtt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/pptt/pptt.c fwts-21.06.00/src/acpi/pptt/pptt.c --- fwts-21.05.00/src/acpi/pptt/pptt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/pptt/pptt.c 2021-06-21 05:43:14.000000000 +0000 @@ -26,7 +26,11 @@ static fwts_acpi_table_info *table; acpi_table_init(PPTT, &table) -static void pptt_processor_test(fwts_framework *fw, const fwts_acpi_table_pptt_processor *entry, uint8_t rev, bool *passed) +static void pptt_processor_test( + fwts_framework *fw, + const fwts_acpi_table_pptt_processor *entry, + const uint8_t rev, + bool *passed) { fwts_log_info_verbatim(fw, " Processor hierarchy node structure (Type 0):"); fwts_log_info_simp_int(fw, " Type: ", entry->header.type); @@ -60,7 +64,11 @@ } -static void pptt_cache_test(fwts_framework *fw, const fwts_acpi_table_pptt_cache *entry, uint8_t rev, bool *passed) +static void pptt_cache_test( + fwts_framework *fw, + const fwts_acpi_table_pptt_cache *entry, + const uint8_t rev, + bool *passed) { fwts_log_info_verbatim(fw, " Cache Type Structure (Type 1):"); @@ -87,7 +95,10 @@ fwts_acpi_reserved_bits("PPTT", "Attributes", entry->attributes, 5, 7, passed); } -static void pptt_id_test(fwts_framework *fw, const fwts_acpi_table_pptt_id *entry, bool *passed) +static void pptt_id_test( + fwts_framework *fw, + const fwts_acpi_table_pptt_id *entry, + bool *passed) { char vendor_id[5]; @@ -138,7 +149,7 @@ if (pptt->header.revision < 3) type_length -= sizeof(((fwts_acpi_table_pptt_cache *) entry)->cache_id); } else if (entry->type == FWTS_PPTT_ID) { - fwts_log_warning(fw, "PPTT type 2 is depreciated since ACPI 6.3 Errata A."); + fwts_log_warning(fw, "PPTT type 2 is deprecated since ACPI 6.3 Errata A."); pptt_id_test(fw, (fwts_acpi_table_pptt_id *) entry, &passed); type_length = sizeof(fwts_acpi_table_pptt_id); } else { @@ -178,6 +189,6 @@ .minor_tests = pptt_tests }; -FWTS_REGISTER("pptt", &pptt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("pptt", &pptt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI | FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/acpi/rasf/rasf.c fwts-21.06.00/src/acpi/rasf/rasf.c --- fwts-21.05.00/src/acpi/rasf/rasf.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/rasf/rasf.c 2021-06-21 05:43:14.000000000 +0000 @@ -64,6 +64,6 @@ .minor_tests = rasf_tests }; -FWTS_REGISTER("rasf", &rasf_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("rasf", &rasf_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/rsdp/rsdp.c fwts-21.06.00/src/acpi/rsdp/rsdp.c --- fwts-21.05.00/src/acpi/rsdp/rsdp.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/rsdp/rsdp.c 2021-06-21 05:43:14.000000000 +0000 @@ -226,6 +226,6 @@ }; FWTS_REGISTER("rsdp", &rsdp_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | - FWTS_FLAG_TEST_ACPI | FWTS_FLAG_TEST_COMPLIANCE_ACPI) + FWTS_FLAG_ACPI | FWTS_FLAG_COMPLIANCE_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/rsdt/rsdt.c fwts-21.06.00/src/acpi/rsdt/rsdt.c --- fwts-21.05.00/src/acpi/rsdt/rsdt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/rsdt/rsdt.c 2021-06-21 05:43:14.000000000 +0000 @@ -70,6 +70,6 @@ .minor_tests = rsdt_tests }; -FWTS_REGISTER("rsdt", &rsdt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("rsdt", &rsdt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/sbst/sbst.c fwts-21.06.00/src/acpi/sbst/sbst.c --- fwts-21.05.00/src/acpi/sbst/sbst.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/sbst/sbst.c 2021-06-21 05:43:14.000000000 +0000 @@ -80,6 +80,6 @@ .minor_tests = sbst_tests }; -FWTS_REGISTER("sbst", &sbst_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("sbst", &sbst_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/sdei/sdei.c fwts-21.06.00/src/acpi/sdei/sdei.c --- fwts-21.05.00/src/acpi/sdei/sdei.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/sdei/sdei.c 2021-06-21 05:43:14.000000000 +0000 @@ -68,6 +68,6 @@ .minor_tests = sdei_tests }; -FWTS_REGISTER("sdei", &sdei_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("sdei", &sdei_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/sdev/sdev.c fwts-21.06.00/src/acpi/sdev/sdev.c --- fwts-21.05.00/src/acpi/sdev/sdev.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/sdev/sdev.c 2021-06-21 05:43:14.000000000 +0000 @@ -29,7 +29,10 @@ static fwts_acpi_table_info *table; acpi_table_init(SDEV, &table) -static void sdev_acpi_namespace_device_test(fwts_framework *fw, const fwts_acpi_table_sdev_acpi *entry, bool *passed) +static void sdev_acpi_namespace_device_test( + fwts_framework *fw, + const fwts_acpi_table_sdev_acpi *entry, + bool *passed) { fwts_log_info_verbatim(fw, " ACPI Integrated Device (Type 0):"); fwts_log_info_simp_int(fw, " Type: ", entry->header.type); @@ -47,7 +50,10 @@ /* TODO - check Secure Access Components - acpica (iasl) supports aren't complete */ } -static void sdev_pcie_endpoint_device_test(fwts_framework *fw, const fwts_acpi_table_sdev_pcie *entry, bool *passed) +static void sdev_pcie_endpoint_device_test( + fwts_framework *fw, + const fwts_acpi_table_sdev_pcie *entry, + bool *passed) { fwts_log_info_verbatim(fw, " PCIe Endpoint Device (Type 1):"); fwts_log_info_simp_int(fw, " Type: ", entry->header.type); @@ -129,6 +135,6 @@ .minor_tests = sdev_tests }; -FWTS_REGISTER("sdev", &sdev_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("sdev", &sdev_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/slic/slic.c fwts-21.06.00/src/acpi/slic/slic.c --- fwts-21.05.00/src/acpi/slic/slic.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/slic/slic.c 2021-06-21 05:43:14.000000000 +0000 @@ -160,6 +160,6 @@ .minor_tests = slic_tests }; -FWTS_REGISTER("slic", &slic_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("slic", &slic_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/slit/slit.c fwts-21.06.00/src/acpi/slit/slit.c --- fwts-21.05.00/src/acpi/slit/slit.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/slit/slit.c 2021-06-21 05:43:14.000000000 +0000 @@ -168,6 +168,6 @@ .minor_tests = slit_tests }; -FWTS_REGISTER("slit", &slit_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("slit", &slit_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/spcr/spcr.c fwts-21.06.00/src/acpi/spcr/spcr.c --- fwts-21.05.00/src/acpi/spcr/spcr.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/spcr/spcr.c 2021-06-21 05:43:14.000000000 +0000 @@ -37,13 +37,8 @@ return FWTS_ERROR; } if (table == NULL || (table && table->length == 0)) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) { - fwts_log_error(fw, "ACPI SPCR table does not exist"); - return FWTS_ERROR; - } else { - fwts_log_error(fw, "ACPI SPCR table does not exist, skipping test"); - return FWTS_SKIP; - } + fwts_log_error(fw, "ACPI SPCR table does not exist, skipping test"); + return FWTS_SKIP; } spcr = (const fwts_acpi_table_spcr*)table->data; @@ -57,7 +52,7 @@ */ static int spcr_sbbr_revision_test(fwts_framework *fw) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) { + if (fw->flags & FWTS_FLAG_SBBR) { const uint8_t SBBR_LATEST_REVISION = 2; if (spcr->header.revision >= SBBR_LATEST_REVISION) @@ -72,7 +67,7 @@ static int spcr_sbbr_gsiv_test(fwts_framework *fw) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) { + if (fw->flags & FWTS_FLAG_SBBR) { const uint8_t ARMH_GIC_INTR_MASK = 0x08; const uint8_t IO_APIC_INTR_MASK = 0x02; @@ -296,6 +291,6 @@ .minor_tests = spcr_tests }; -FWTS_REGISTER("spcr", &spcr_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI | FWTS_FLAG_TEST_SBBR) +FWTS_REGISTER("spcr", &spcr_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI | FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/acpi/spmi/spmi.c fwts-21.06.00/src/acpi/spmi/spmi.c --- fwts-21.05.00/src/acpi/spmi/spmi.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/spmi/spmi.c 2021-06-21 05:43:14.000000000 +0000 @@ -180,6 +180,6 @@ .minor_tests = spmi_tests }; -FWTS_REGISTER("spmi", &spmi_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("spmi", &spmi_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/srat/srat.c fwts-21.06.00/src/acpi/srat/srat.c --- fwts-21.05.00/src/acpi/srat/srat.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/srat/srat.c 2021-06-21 05:43:14.000000000 +0000 @@ -401,6 +401,6 @@ .minor_tests = srat_tests }; -FWTS_REGISTER("srat", &srat_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("srat", &srat_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/stao/stao.c fwts-21.06.00/src/acpi/stao/stao.c --- fwts-21.05.00/src/acpi/stao/stao.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/stao/stao.c 2021-06-21 05:43:14.000000000 +0000 @@ -144,6 +144,6 @@ .minor_tests = stao_tests }; -FWTS_REGISTER("stao", &stao_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("stao", &stao_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/tcpa/tcpa.c fwts-21.06.00/src/acpi/tcpa/tcpa.c --- fwts-21.05.00/src/acpi/tcpa/tcpa.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/tcpa/tcpa.c 2021-06-21 05:43:14.000000000 +0000 @@ -155,6 +155,6 @@ .minor_tests = tcpa_tests }; -FWTS_REGISTER("tcpa", &tcpa_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("tcpa", &tcpa_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/tpm2/tpm2.c fwts-21.06.00/src/acpi/tpm2/tpm2.c --- fwts-21.05.00/src/acpi/tpm2/tpm2.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/tpm2/tpm2.c 2021-06-21 05:43:14.000000000 +0000 @@ -97,6 +97,6 @@ .minor_tests = tpm2_tests }; -FWTS_REGISTER("tpm2", &tpm2_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("tpm2", &tpm2_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/uefi/uefi.c fwts-21.06.00/src/acpi/uefi/uefi.c --- fwts-21.05.00/src/acpi/uefi/uefi.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/uefi/uefi.c 2021-06-21 05:43:14.000000000 +0000 @@ -115,6 +115,6 @@ .minor_tests = uefi_tests }; -FWTS_REGISTER("uefi", &uefi_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("uefi", &uefi_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/waet/waet.c fwts-21.06.00/src/acpi/waet/waet.c --- fwts-21.05.00/src/acpi/waet/waet.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/waet/waet.c 2021-06-21 05:43:14.000000000 +0000 @@ -73,6 +73,6 @@ .minor_tests = waet_tests }; -FWTS_REGISTER("waet", &waet_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("waet", &waet_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/wdat/wdat.c fwts-21.06.00/src/acpi/wdat/wdat.c --- fwts-21.05.00/src/acpi/wdat/wdat.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/wdat/wdat.c 2021-06-21 05:43:14.000000000 +0000 @@ -28,8 +28,6 @@ #include "fwts_acpi_object_eval.h" -#define ACPI_DUMP (0) /* WDAT entries are long, so don't dump, too verbose */ - static fwts_acpi_table_info *table; acpi_table_init(WDAT, &table) @@ -41,6 +39,7 @@ { const fwts_acpi_table_wdat *wdat = (const fwts_acpi_table_wdat *)table->data; + uint32_t reserved1, reserved2; bool passed = true; bool entries_passed = true; size_t total_length; @@ -58,33 +57,28 @@ goto done; } + reserved1 = (uint32_t) wdat->reserved1[0] + ((uint32_t) wdat->reserved1[1] << 8) + + ((uint32_t) wdat->reserved1[2] << 16); + + reserved2 = (uint32_t) wdat->reserved2[0] + ((uint32_t) wdat->reserved2[1] << 8) + + ((uint32_t) wdat->reserved2[2] << 16); + /* Now we have got some sane data, dump the WDAT */ -#if ACPI_DUMP fwts_log_info_verbatim(fw, "WDAT Microsoft Watchdog Action Table:"); - fwts_log_info_verbatim(fw, " Watchdog Header Length: 0x%8.8" PRIx32, wdat->watchdog_header_length); - fwts_log_info_verbatim(fw, " PCI Segment: 0x%4.4" PRIx16, wdat->pci_segment); - fwts_log_info_verbatim(fw, " PCI Bus Number: 0x%2.2" PRIx8, wdat->pci_bus_number); - fwts_log_info_verbatim(fw, " PCI Device Number: 0x%2.2" PRIx8, wdat->pci_device_number); - fwts_log_info_verbatim(fw, " PCI Function Number: 0x%2.2" PRIx8, wdat->pci_function_number); - fwts_log_info_verbatim(fw, " Reserved: 0x%2.2" PRIx8 " 0x%2.2" PRIx8 " 0x%2.2" PRIx8, - wdat->reserved1[0], wdat->reserved1[1], wdat->reserved1[2]); - fwts_log_info_verbatim(fw, " Timer Period: 0x%4.4" PRIx32, wdat->timer_period); - fwts_log_info_verbatim(fw, " Maximum Count: 0x%4.4" PRIx32, wdat->maximum_count); - fwts_log_info_verbatim(fw, " Minimum Count: 0x%4.4" PRIx32, wdat->minimum_count); - fwts_log_info_verbatim(fw, " Watchdog Flags: 0x%4.4" PRIx32, wdat->watchdog_flags); - fwts_log_info_verbatim(fw, " Reserved: 0x%2.2" PRIx8 " 0x%2.2" PRIx8 " 0x%2.2" PRIx8, - wdat->reserved2[0], wdat->reserved2[1], wdat->reserved2[2]); - fwts_log_info_verbatim(fw, " Watchdog Entries 0x%4.4" PRIx32, wdat->number_of_entries); -#endif - - if (wdat->reserved1[0] | wdat->reserved1[1] | wdat->reserved1[2] | - wdat->reserved2[0] | wdat->reserved2[1] | wdat->reserved2[2]) { - passed = false; - fwts_failed(fw, LOG_LEVEL_MEDIUM, - "WDATReservedFieldsNonZero", - "WDAT Reserved Fields contain a non-zero value, these " - "all should be zero."); - } + fwts_log_info_simp_int(fw, " Watchdog Header Length: ", wdat->watchdog_header_length); + fwts_log_info_simp_int(fw, " PCI Segment: ", wdat->pci_segment); + fwts_log_info_simp_int(fw, " PCI Bus Number: ", wdat->pci_bus_number); + fwts_log_info_simp_int(fw, " PCI Device Number: ", wdat->pci_device_number); + fwts_log_info_simp_int(fw, " PCI Function Number: ", wdat->pci_function_number); + fwts_log_info_simp_int(fw, " Reserved: ", reserved1); + fwts_acpi_reserved_zero("WDAT", "Reserved1", reserved1, &passed); + fwts_log_info_simp_int(fw, " Timer Period: ", wdat->timer_period); + fwts_log_info_simp_int(fw, " Maximum Count: ", wdat->maximum_count); + fwts_log_info_simp_int(fw, " Minimum Count: ", wdat->minimum_count); + fwts_log_info_simp_int(fw, " Watchdog Flags: ", wdat->watchdog_flags); + fwts_log_info_simp_int(fw, " Reserved: ", reserved2); + fwts_acpi_reserved_zero("WDAT", "Reserved2", reserved2, &passed); + fwts_log_info_simp_int(fw, " Watchdog Entries ", wdat->number_of_entries); if (wdat->minimum_count > wdat->maximum_count) { passed = false; @@ -120,21 +114,19 @@ } for (i = 0; i < wdat->number_of_entries; i++) { const fwts_acpi_table_wdat_instr_entries *entry = &wdat->entries[i]; -#if ACPI_DUMP + fwts_log_info_verbatim(fw, "Watchdog Instruction Entry %" PRIu32, i + 1); - fwts_log_info_verbatim(fw, " Watchdog Action: 0x%2.2" PRIx8, entry->watchdog_action); - fwts_log_info_verbatim(fw, " Instruction Flags: 0x%2.2" PRIx8, entry->instruction_flags); - fwts_log_info_verbatim(fw, " Reserved: 0x%2.2" PRIx8 " 0x%2.2" PRIx8, - entry->reserved[0], entry->reserved[1]); - - fwts_log_info_verbatim(fw, " Address Space ID: 0x%2.2" PRIx8, entry->register_region.address_space_id); - fwts_log_info_verbatim(fw, " Register Bit Width 0x%2.2" PRIx8, entry->register_region.register_bit_width); - fwts_log_info_verbatim(fw, " Register Bit Offset 0x%2.2" PRIx8, entry->register_region.register_bit_offset); - fwts_log_info_verbatim(fw, " Access Size 0x%2.2" PRIx8, entry->register_region.access_width); - fwts_log_info_verbatim(fw, " Address 0x%16.16" PRIx64, entry->register_region.address); - fwts_log_info_verbatim(fw, " Value: 0x%8.8" PRIx32, entry->value); - fwts_log_info_verbatim(fw, " Mask: 0x%8.8" PRIx32, entry->mask); -#endif + fwts_log_info_simp_int(fw, " Watchdog Action: ", entry->watchdog_action); + fwts_log_info_simp_int(fw, " Instruction Flags: ", entry->instruction_flags); + fwts_log_info_simp_int(fw, " Reserved: ", entry->reserved); + fwts_acpi_reserved_zero("WDAT", "Watchdog Entry Reserved", entry->reserved, &passed); + fwts_log_info_simp_int(fw, " Address Space ID: ", entry->register_region.address_space_id); + fwts_log_info_simp_int(fw, " Register Bit Width ", entry->register_region.register_bit_width); + fwts_log_info_simp_int(fw, " Register Bit Offset ", entry->register_region.register_bit_offset); + fwts_log_info_simp_int(fw, " Access Size ", entry->register_region.access_width); + fwts_log_info_simp_int(fw, " Address ", entry->register_region.address); + fwts_log_info_simp_int(fw, " Value: ", entry->value); + fwts_log_info_simp_int(fw, " Mask: ", entry->mask); switch (entry->watchdog_action) { case 0x01: /* RESET */ @@ -203,6 +195,6 @@ .minor_tests = wdat_tests }; -FWTS_REGISTER("wdat", &wdat_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("wdat", &wdat_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/wmi/wmi.c fwts-21.06.00/src/acpi/wmi/wmi.c --- fwts-21.05.00/src/acpi/wmi/wmi.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/wmi/wmi.c 2021-06-21 05:43:14.000000000 +0000 @@ -426,6 +426,6 @@ .minor_tests = wmi_tests }; -FWTS_REGISTER("wmi", &wmi_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("wmi", &wmi_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/wpbt/wpbt.c fwts-21.06.00/src/acpi/wpbt/wpbt.c --- fwts-21.05.00/src/acpi/wpbt/wpbt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/wpbt/wpbt.c 2021-06-21 05:43:14.000000000 +0000 @@ -80,6 +80,6 @@ .minor_tests = wpbt_tests }; -FWTS_REGISTER("wpbt", &wpbt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("wpbt", &wpbt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/wsmt/wsmt.c fwts-21.06.00/src/acpi/wsmt/wsmt.c --- fwts-21.05.00/src/acpi/wsmt/wsmt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/wsmt/wsmt.c 2021-06-21 05:43:14.000000000 +0000 @@ -70,6 +70,6 @@ .minor_tests = wsmt_tests }; -FWTS_REGISTER("wsmt", &wsmt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) +FWTS_REGISTER("wsmt", &wsmt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/xenv/xenv.c fwts-21.06.00/src/acpi/xenv/xenv.c --- fwts-21.05.00/src/acpi/xenv/xenv.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/xenv/xenv.c 2021-06-21 05:43:14.000000000 +0000 @@ -71,6 +71,6 @@ }; FWTS_REGISTER("xenv", &xenv_check_ops, FWTS_TEST_ANYTIME, - FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI) + FWTS_FLAG_BATCH | FWTS_FLAG_ACPI) #endif diff -Nru fwts-21.05.00/src/acpi/xsdt/xsdt.c fwts-21.06.00/src/acpi/xsdt/xsdt.c --- fwts-21.05.00/src/acpi/xsdt/xsdt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpi/xsdt/xsdt.c 2021-06-21 05:43:14.000000000 +0000 @@ -27,24 +27,7 @@ #include static fwts_acpi_table_info *table; - -static int xsdt_init(fwts_framework *fw) -{ - if (fwts_acpi_find_table(fw, "XSDT", 0, &table) != FWTS_OK) { - fwts_log_error(fw, "Cannot read ACPI tables."); - return FWTS_ERROR; - } - if (table == NULL || (table && table->length == 0)) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) { - fwts_log_error(fw, "ACPI XSDT table does not exist"); - return FWTS_ERROR; - } else { - fwts_log_error(fw, "ACPI XSDT table does not exist, skipping test"); - return FWTS_SKIP; - } - } - return FWTS_OK; -} +acpi_table_init(XSDT, &table) /* * XSDT Extended System Description Table @@ -59,7 +42,7 @@ for (i = 0; i < n; i++) { if (xsdt->entries[i] == 0) { passed = false; - if (fw->flags & FWTS_FLAG_TEST_SBBR) { + if (fw->flags & FWTS_FLAG_SBBR) { fwts_failed(fw, LOG_LEVEL_CRITICAL, "XSDTEntryNull", "XSDT Entry %zd is null, should not be non-zero.", i); @@ -78,7 +61,7 @@ } } if (passed) { - if (fw->flags & FWTS_FLAG_TEST_SBBR) { + if (fw->flags & FWTS_FLAG_SBBR) { fwts_passed(fw, "XSDT is present, pointed at by XsdrAddress=0x%" PRIx64 " and contain valid pointers to %d other ACPI tables mandated by SBBR", xsdt->entries[0], (int)n); @@ -96,10 +79,10 @@ static fwts_framework_ops xsdt_ops = { .description = "XSDT Extended System Description Table test.", - .init = xsdt_init, + .init = XSDT_init, .minor_tests = xsdt_tests }; -FWTS_REGISTER("xsdt", &xsdt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_TEST_ACPI | FWTS_FLAG_TEST_SBBR) +FWTS_REGISTER("xsdt", &xsdt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ACPI | FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/acpica/source/common/ahtable.c fwts-21.06.00/src/acpica/source/common/ahtable.c --- fwts-21.05.00/src/acpica/source/common/ahtable.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/common/ahtable.c 2021-06-21 05:43:14.000000000 +0000 @@ -199,20 +199,21 @@ */ const AH_TABLE AcpiGbl_SupportedTables[] = { - {ACPI_SIG_ASF, "Alert Standard Format table"}, + {ACPI_SIG_ASF, "Alert Standard Format Table"}, + {ACPI_SIG_BDAT, "BIOS Data ACPI Table"}, {ACPI_SIG_BERT, "Boot Error Record Table"}, {ACPI_SIG_BGRT, "Boot Graphics Resource Table"}, {ACPI_SIG_BOOT, "Simple Boot Flag Table"}, {ACPI_SIG_CEDT, "CXL Early Discovery Table"}, - {ACPI_SIG_CPEP, "Corrected Platform Error Polling table"}, + {ACPI_SIG_CPEP, "Corrected Platform Error Polling Table"}, {ACPI_SIG_CSRT, "Core System Resource Table"}, - {ACPI_SIG_DBG2, "Debug Port table type 2"}, - {ACPI_SIG_DBGP, "Debug Port table"}, - {ACPI_SIG_DMAR, "DMA Remapping table"}, - {ACPI_SIG_DRTM, "Dynamic Root of Trust for Measurement table"}, + {ACPI_SIG_DBG2, "Debug Port Table type 2"}, + {ACPI_SIG_DBGP, "Debug Port Table"}, + {ACPI_SIG_DMAR, "DMA Remapping Table"}, + {ACPI_SIG_DRTM, "Dynamic Root of Trust for Measurement Table"}, {ACPI_SIG_DSDT, "Differentiated System Description Table (AML table)"}, {ACPI_SIG_ECDT, "Embedded Controller Boot Resources Table"}, - {ACPI_SIG_EINJ, "Error Injection table"}, + {ACPI_SIG_EINJ, "Error Injection Table"}, {ACPI_SIG_ERST, "Error Record Serialization Table"}, {ACPI_SIG_FACS, "Firmware ACPI Control Structure"}, {ACPI_SIG_FADT, "Fixed ACPI Description Table (FADT)"}, @@ -220,38 +221,41 @@ {ACPI_SIG_GTDT, "Generic Timer Description Table"}, {ACPI_SIG_HEST, "Hardware Error Source Table"}, {ACPI_SIG_HMAT, "Heterogeneous Memory Attributes Table"}, - {ACPI_SIG_HPET, "High Precision Event Timer table"}, + {ACPI_SIG_HPET, "High Precision Event Timer Table"}, {ACPI_SIG_IORT, "IO Remapping Table"}, {ACPI_SIG_IVRS, "I/O Virtualization Reporting Structure"}, {ACPI_SIG_LPIT, "Low Power Idle Table"}, {ACPI_SIG_MADT, "Multiple APIC Description Table (MADT)"}, - {ACPI_SIG_MCFG, "Memory Mapped Configuration table"}, - {ACPI_SIG_MCHI, "Management Controller Host Interface table"}, + {ACPI_SIG_MCFG, "Memory Mapped Configuration Table"}, + {ACPI_SIG_MCHI, "Management Controller Host Interface Table"}, {ACPI_SIG_MPST, "Memory Power State Table"}, {ACPI_SIG_MSCT, "Maximum System Characteristics Table"}, - {ACPI_SIG_MSDM, "Microsoft Data Management table"}, + {ACPI_SIG_MSDM, "Microsoft Data Management Table"}, {ACPI_SIG_NFIT, "NVDIMM Firmware Interface Table"}, {ACPI_SIG_PCCT, "Platform Communications Channel Table"}, - {ACPI_SIG_PHAT, "Platform Health Assessment Table"}, {ACPI_SIG_PDTT, "Platform Debug Trigger Table"}, + {ACPI_SIG_PHAT, "Platform Health Assessment Table"}, {ACPI_SIG_PMTT, "Platform Memory Topology Table"}, {ACPI_SIG_PPTT, "Processor Properties Topology Table"}, + {ACPI_SIG_PRMT, "Platform Runtime Mechanism Table"}, {ACPI_SIG_RASF, "RAS Features Table"}, + {ACPI_SIG_RGRT, "Regulatory Graphics Resource Table"}, {ACPI_RSDP_NAME,"Root System Description Pointer"}, {ACPI_SIG_RSDT, "Root System Description Table"}, {ACPI_SIG_S3PT, "S3 Performance Table"}, {ACPI_SIG_SBST, "Smart Battery Specification Table"}, {ACPI_SIG_SDEI, "Software Delegated Exception Interface Table"}, - {ACPI_SIG_SDEV, "Secure Devices table"}, + {ACPI_SIG_SDEV, "Secure Devices Table"}, {ACPI_SIG_SLIC, "Software Licensing Description Table"}, {ACPI_SIG_SLIT, "System Locality Information Table"}, - {ACPI_SIG_SPCR, "Serial Port Console Redirection table"}, - {ACPI_SIG_SPMI, "Server Platform Management Interface table"}, + {ACPI_SIG_SPCR, "Serial Port Console Redirection Table"}, + {ACPI_SIG_SPMI, "Server Platform Management Interface Table"}, {ACPI_SIG_SRAT, "System Resource Affinity Table"}, {ACPI_SIG_SSDT, "Secondary System Description Table (AML table)"}, - {ACPI_SIG_STAO, "Status Override table"}, - {ACPI_SIG_TCPA, "Trusted Computing Platform Alliance table"}, - {ACPI_SIG_TPM2, "Trusted Platform Module hardware interface table"}, + {ACPI_SIG_STAO, "Status Override Table"}, + {ACPI_SIG_SVKL, "Storage Volume Key Location Table"}, + {ACPI_SIG_TCPA, "Trusted Computing Platform Alliance Table"}, + {ACPI_SIG_TPM2, "Trusted Platform Module hardware interface Table"}, {ACPI_SIG_UEFI, "UEFI Boot Optimization Table"}, {ACPI_SIG_VIOT, "Virtual I/O Translation Table"}, {ACPI_SIG_WAET, "Windows ACPI Emulated Devices Table"}, @@ -260,7 +264,7 @@ {ACPI_SIG_WDRT, "Watchdog Resource Table"}, {ACPI_SIG_WPBT, "Windows Platform Binary Table"}, {ACPI_SIG_WSMT, "Windows SMM Security Mitigations Table"}, - {ACPI_SIG_XENV, "Xen Environment table"}, + {ACPI_SIG_XENV, "Xen Environment Table"}, {ACPI_SIG_XSDT, "Extended System Description Table"}, {NULL, NULL} }; diff -Nru fwts-21.05.00/src/acpica/source/common/dmtable.c fwts-21.06.00/src/acpica/source/common/dmtable.c --- fwts-21.05.00/src/acpica/source/common/dmtable.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/common/dmtable.c 2021-06-21 05:43:14.000000000 +0000 @@ -187,6 +187,7 @@ static const char *AcpiDmCedtSubnames[] = { "CXL Host Bridge Structure", + "CXL Fixed Memory Window Structure", "Unknown Subtable Type" /* Reserved */ }; @@ -350,6 +351,7 @@ "Generic MSI Frame", /* ACPI_MADT_GENERIC_MSI_FRAME */ "Generic Interrupt Redistributor", /* ACPI_MADT_GENERIC_REDISTRIBUTOR */ "Generic Interrupt Translator", /* ACPI_MADT_GENERIC_TRANSLATOR */ + "Mutiprocessor Wakeup", /* ACPI_MADT_TYPE_MULTIPROC_WAKEUP */ "Unknown Subtable Type" /* Reserved */ }; @@ -401,6 +403,12 @@ "Unknown Subtable Type" /* Reserved */ }; +static const char *AcpiDmRgrtSubnames[] = +{ + "Unknown/Reserved Image Type", /* ACPI_RGRT_TYPE_RESERVED0 */ + "Type PNG" /* ACPI_RGRT_IMAGE_TYPE_PNG */ +}; + static const char *AcpiDmSdevSubnames[] = { "Namespace Device", /* ACPI_SDEV_TYPE_NAMESPACE_DEVICE */ @@ -438,9 +446,28 @@ static const char *AcpiDmIvrsSubnames[] = { - "Hardware Definition Block", - "Memory Definition Block", - "Unknown Subtable Type" /* Reserved */ + "Hardware Definition Block (IVHD)", + "Hardware Definition Block - Mixed Format (IVHD)", + "Memory Definition Block (IVMD)", + "Unknown/Reserved Subtable Type" /* Reserved */ +}; + +static const char *AcpiDmIvrsDevEntryNames[] = +{ + "Unknown/Reserved Device Entry Type", /* 0- Reserved */ + "Device Entry: Select All Devices", /* 1 */ + "Device Entry: Select One Device", /* 2 */ + "Device Entry: Start of Range", /* 3 */ + "Device Entry: End of Range", /* 4 */ + "Device Entry: Alias Select", /* 66 */ + "Device Entry: Alias Start of Range", /* 67 */ + "Unknown/Reserved Device Entry Type", /* 68- Reserved */ + "Unknown/Reserved Device Entry Type", /* 69- Reserved */ + "Device Entry: Extended Select", /* 70 */ + "Device Entry: Extended Start of Range", /* 71 */ + "Device Entry: Special Device", /* 72 */ + "Device Entry: ACPI HID Named Device", /* 240 */ + "Unknown/Reserved Device Entry Type" /* Reserved */ }; static const char *AcpiDmLpitSubnames[] = @@ -507,6 +534,7 @@ const ACPI_DMTABLE_DATA AcpiDmTableData[] = { {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, TemplateAsf}, + {ACPI_SIG_BDAT, AcpiDmTableInfoBdat, NULL, NULL, TemplateBdat}, {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert}, {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt, NULL, NULL, TemplateBgrt}, {ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, TemplateBoot}, @@ -541,7 +569,9 @@ {ACPI_SIG_PHAT, NULL, AcpiDmDumpPhat, DtCompilePhat, TemplatePhat}, {ACPI_SIG_PMTT, NULL, AcpiDmDumpPmtt, DtCompilePmtt, TemplatePmtt}, {ACPI_SIG_PPTT, NULL, AcpiDmDumpPptt, DtCompilePptt, TemplatePptt}, + {ACPI_SIG_PRMT, NULL, AcpiDmDumpPrmt, DtCompilePrmt, TemplatePrmt}, {ACPI_SIG_RASF, AcpiDmTableInfoRasf, NULL, NULL, TemplateRasf}, + {ACPI_SIG_RGRT, NULL, AcpiDmDumpRgrt, DtCompileRgrt, TemplateRgrt}, {ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, DtCompileRsdt, TemplateRsdt}, {ACPI_SIG_S3PT, NULL, NULL, NULL, TemplateS3pt}, {ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, NULL, TemplateSbst}, @@ -553,6 +583,7 @@ {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, NULL, TemplateSpmi}, {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, DtCompileSrat, TemplateSrat}, {ACPI_SIG_STAO, NULL, AcpiDmDumpStao, DtCompileStao, TemplateStao}, + {ACPI_SIG_SVKL, AcpiDmTableInfoSvkl, AcpiDmDumpSvkl, DtCompileSvkl, TemplateSvkl}, {ACPI_SIG_TCPA, NULL, AcpiDmDumpTcpa, DtCompileTcpa, TemplateTcpa}, {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, AcpiDmDumpTpm2, DtCompileTpm2, TemplateTpm2}, {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, DtCompileUefi, TemplateUefi}, @@ -940,8 +971,8 @@ if (SubtableLength && (Info->Offset >= SubtableLength)) { AcpiOsPrintf ( - "/**** ACPI subtable terminates early - " - "may be older version (dump table) */\n"); + "/**** ACPI subtable terminates early (Len %u) - " + "may be older version (dump table) */\n", SubtableLength); /* Move on to next subtable */ @@ -966,11 +997,13 @@ case ACPI_DMT_ACCWIDTH: case ACPI_DMT_CEDT: case ACPI_DMT_IVRS: + case ACPI_DMT_IVRS_DE: case ACPI_DMT_GTDT: case ACPI_DMT_MADT: case ACPI_DMT_PCCT: case ACPI_DMT_PMTT: case ACPI_DMT_PPTT: + case ACPI_DMT_RGRT: case ACPI_DMT_SDEV: case ACPI_DMT_SRAT: case ACPI_DMT_ASF: @@ -1077,6 +1110,11 @@ ByteLength = strlen (ACPI_CAST_PTR (char, Target)) + 1; break; + case ACPI_DMT_IVRS_UNTERMINATED_STRING: + + ByteLength = ((ACPI_CAST_PTR (ACPI_IVRS_DEVICE_HID, Target) -1)->UidLength); + break; + case ACPI_DMT_GAS: if (!LastOutputBlankLine) @@ -1273,7 +1311,7 @@ /* Convert 16-byte UUID buffer to 36-byte formatted UUID string */ - (void) AuConvertUuidToString ((char *) Target, AslGbl_MsgBuffer); + (void) AcpiUtConvertUuidToString ((char *) Target, AslGbl_MsgBuffer); AcpiOsPrintf ("%s\n", AslGbl_MsgBuffer); break; @@ -1283,6 +1321,11 @@ AcpiOsPrintf ("\"%s\"\n", ACPI_CAST_PTR (char, Target)); break; + case ACPI_DMT_IVRS_UNTERMINATED_STRING: + + AcpiOsPrintf ("\"%.*s\"\n", ByteLength, ACPI_CAST_PTR (char, Target)); + break; + /* Fixed length ASCII name fields */ case ACPI_DMT_SIG: @@ -1684,6 +1727,20 @@ AcpiDmDumpBuffer (Target, 0, ByteLength, 0, NULL); break; + case ACPI_DMT_RGRT: + + /* RGRT subtable types */ + + Temp8 = *Target; + if (Temp8 >= ACPI_RGRT_TYPE_RESERVED) + { + Temp8 = ACPI_RGRT_TYPE_RESERVED0; + } + + AcpiOsPrintf (UINT8_FORMAT, *Target, + AcpiDmRgrtSubnames[Temp8]); + break; + case ACPI_DMT_SDEV: /* SDEV subtable types */ @@ -1750,21 +1807,62 @@ { case ACPI_IVRS_TYPE_HARDWARE1: case ACPI_IVRS_TYPE_HARDWARE2: - case ACPI_IVRS_TYPE_HARDWARE3: Name = AcpiDmIvrsSubnames[0]; break; + case ACPI_IVRS_TYPE_HARDWARE3: + + Name = AcpiDmIvrsSubnames[1]; + break; + case ACPI_IVRS_TYPE_MEMORY1: case ACPI_IVRS_TYPE_MEMORY2: case ACPI_IVRS_TYPE_MEMORY3: - Name = AcpiDmIvrsSubnames[1]; + Name = AcpiDmIvrsSubnames[2]; break; default: - Name = AcpiDmIvrsSubnames[2]; + Name = AcpiDmIvrsSubnames[3]; + break; + } + + AcpiOsPrintf (UINT8_FORMAT, *Target, Name); + break; + + case ACPI_DMT_IVRS_DE: + + /* IVRS device entry types */ + + Temp8 = *Target; + switch (Temp8) + { + case ACPI_IVRS_TYPE_ALL: + case ACPI_IVRS_TYPE_SELECT: + case ACPI_IVRS_TYPE_START: + case ACPI_IVRS_TYPE_END: + + Name = AcpiDmIvrsDevEntryNames[Temp8]; + break; + + case ACPI_IVRS_TYPE_ALIAS_SELECT: + case ACPI_IVRS_TYPE_ALIAS_START: + case ACPI_IVRS_TYPE_EXT_SELECT: + case ACPI_IVRS_TYPE_EXT_START: + case ACPI_IVRS_TYPE_SPECIAL: + + Name = AcpiDmIvrsDevEntryNames[Temp8 - 61]; + break; + + case ACPI_IVRS_TYPE_HID: + + Name = AcpiDmIvrsDevEntryNames[Temp8 - 228]; + break; + + default: + Name = AcpiDmIvrsDevEntryNames[0]; /* Unknown/Reserved */ break; } diff -Nru fwts-21.05.00/src/acpica/source/common/dmtbdump2.c fwts-21.06.00/src/acpica/source/common/dmtbdump2.c --- fwts-21.05.00/src/acpica/source/common/dmtbdump2.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/common/dmtbdump2.c 2021-06-21 05:43:14.000000000 +0000 @@ -153,6 +153,7 @@ #include "accommon.h" #include "acdisasm.h" #include "actables.h" +#include "aslcompiler.h" /* This module used for application-level code only */ @@ -483,7 +484,18 @@ * * RETURN: None * - * DESCRIPTION: Format the contents of a IVRS + * DESCRIPTION: Format the contents of a IVRS. Notes: + * The IVRS is essentially a flat table, with the following + * structure: + *
+ *
+ * + * + * ... + * + * + * + * ... * ******************************************************************************/ @@ -513,36 +525,36 @@ /* Subtables */ Subtable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset); + while (Offset < Table->Length) { - /* Common subtable header */ - - AcpiOsPrintf ("\n"); - Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, - Subtable->Length, AcpiDmTableInfoIvrsHdr); - if (ACPI_FAILURE (Status)) - { - return; - } - switch (Subtable->Type) { + /* Type 10h, IVHD (I/O Virtualization Hardware Definition) */ + case ACPI_IVRS_TYPE_HARDWARE1: - InfoTable = AcpiDmTableInfoIvrs0; + AcpiOsPrintf ("\n"); + InfoTable = AcpiDmTableInfoIvrsHware1; break; + /* Types 11h, 40h, IVHD (I/O Virtualization Hardware Definition) */ + case ACPI_IVRS_TYPE_HARDWARE2: case ACPI_IVRS_TYPE_HARDWARE3: - InfoTable = AcpiDmTableInfoIvrs01; + AcpiOsPrintf ("\n"); + InfoTable = AcpiDmTableInfoIvrsHware23; break; + /* Types 20h-22h, IVMD (I/O Virtualization Memory Definition Block) */ + case ACPI_IVRS_TYPE_MEMORY1: case ACPI_IVRS_TYPE_MEMORY2: case ACPI_IVRS_TYPE_MEMORY3: - InfoTable = AcpiDmTableInfoIvrs1; + AcpiOsPrintf ("\n"); + InfoTable = AcpiDmTableInfoIvrsMemory; break; default: @@ -562,7 +574,6 @@ /* Dump the subtable */ - AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, Subtable->Length, InfoTable); if (ACPI_FAILURE (Status)) @@ -570,7 +581,7 @@ return; } - /* The hardware subtable can contain multiple device entries */ + /* The hardware subtables (IVHD) can contain multiple device entries */ if (Subtable->Type == ACPI_IVRS_TYPE_HARDWARE1 || Subtable->Type == ACPI_IVRS_TYPE_HARDWARE2 || @@ -584,16 +595,19 @@ } else { - /* ACPI_IVRS_TYPE_HARDWARE2 subtable type */ + /* ACPI_IVRS_TYPE_HARDWARE2, HARDWARE3 subtable types */ EntryOffset = Offset + sizeof (ACPI_IVRS_HARDWARE2); DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, Subtable, sizeof (ACPI_IVRS_HARDWARE2)); } + /* Process all of the Device Entries */ + while (EntryOffset < (Offset + Subtable->Length)) { AcpiOsPrintf ("\n"); + /* * Upper 2 bits of Type encode the length of the device entry * @@ -645,7 +659,7 @@ case ACPI_IVRS_TYPE_HID: - EntryLength = 22; + EntryLength = 4; InfoTable = AcpiDmTableInfoIvrsHid; break; @@ -669,21 +683,87 @@ HidSubtable = ACPI_CAST_PTR (ACPI_IVRS_DEVICE_HID, DeviceEntry); EntryOffset += EntryLength; - DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, DeviceEntry, + DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, HidSubtable, EntryLength); if (EntryType == ACPI_IVRS_TYPE_HID) { - EntryLength = HidSubtable->UidLength; - Status = AcpiDmDumpTable (Table->Length, EntryOffset, - Table, EntryLength, AcpiDmTableInfoIvrsHid1); + /* + * Determine if the HID is an integer or a string. + * An integer is defined to be 32 bits, with the upper 32 bits + * set to zero. (from the ACPI Spec): "The HID can be a 32-bit + * integer or a character string. If an integer, the lower + * 4 bytes of the field contain the integer and the upper + * 4 bytes are padded with 0". + */ + if (UtIsIdInteger ((UINT8 *) &HidSubtable->AcpiHid)) + { + Status = AcpiDmDumpTable (Table->Length, EntryOffset, + &HidSubtable->AcpiHid, 8, AcpiDmTableInfoIvrsHidInteger); + } + else + { + Status = AcpiDmDumpTable (Table->Length, EntryOffset, + &HidSubtable->AcpiHid, 8, AcpiDmTableInfoIvrsHidString); + } if (ACPI_FAILURE (Status)) { return; } - EntryOffset += EntryLength; + + EntryOffset += 8; + + /* + * Determine if the CID is an integer or a string. The format + * of the CID is the same as the HID above. From ACPI Spec: + * "If present, CID must be a single Compatible Device ID + * following the same format as the HID field." + */ + if (UtIsIdInteger ((UINT8 *) &HidSubtable->AcpiCid)) + { + Status = AcpiDmDumpTable (Table->Length, EntryOffset, + &HidSubtable->AcpiCid, 8, AcpiDmTableInfoIvrsCidInteger); + } + else + { + Status = AcpiDmDumpTable (Table->Length, EntryOffset, + &HidSubtable->AcpiCid, 8, AcpiDmTableInfoIvrsCidString); + } + if (ACPI_FAILURE (Status)) + { + return; + } + + EntryOffset += 8; + EntryLength = HidSubtable->UidLength; + + if (EntryLength > ACPI_IVRS_UID_NOT_PRESENT) + { + /* Dump the UID based upon the UidType field (String or Integer) */ + + if (HidSubtable->UidType == ACPI_IVRS_UID_IS_STRING) + { + Status = AcpiDmDumpTable (Table->Length, EntryOffset, + &HidSubtable->UidType, EntryLength, AcpiDmTableInfoIvrsUidString); + if (ACPI_FAILURE (Status)) + { + return; + } + } + else /* ACPI_IVRS_UID_IS_INTEGER */ + { + Status = AcpiDmDumpTable (Table->Length, EntryOffset, + &HidSubtable->UidType, EntryLength, AcpiDmTableInfoIvrsUidInteger); + if (ACPI_FAILURE (Status)) + { + return; + } + } + } + + EntryOffset += EntryLength+2; DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, - DeviceEntry, EntryLength); + Table, EntryOffset); } } } @@ -1922,6 +2002,108 @@ } } + +/******************************************************************************* + * + * FUNCTION: AcpiDmDumpPrmt + * + * PARAMETERS: Table - A PRMT table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a PRMT. This table type consists + * of an open-ended number of subtables. + * + ******************************************************************************/ + +void +AcpiDmDumpPrmt ( + ACPI_TABLE_HEADER *Table) +{ + UINT32 CurrentOffset = sizeof (ACPI_TABLE_HEADER); + ACPI_TABLE_PRMT_HEADER *PrmtHeader; + ACPI_PRMT_MODULE_INFO *PrmtModuleInfo; + ACPI_PRMT_HANDLER_INFO *PrmtHandlerInfo; + ACPI_STATUS Status; + UINT32 i, j; + + + /* Main table header */ + + PrmtHeader = ACPI_ADD_PTR (ACPI_TABLE_PRMT_HEADER, Table, CurrentOffset); + Status = AcpiDmDumpTable (Table->Length, CurrentOffset, PrmtHeader, + sizeof (ACPI_TABLE_PRMT_HEADER), AcpiDmTableInfoPrmtHdr); + if (ACPI_FAILURE (Status)) + { + AcpiOsPrintf ("Invalid PRMT header\n"); + return; + } + + CurrentOffset += sizeof (ACPI_TABLE_PRMT_HEADER); + + /* PRM Module Information Structure array */ + + for (i = 0; i < PrmtHeader->ModuleInfoCount; ++i) + { + PrmtModuleInfo = ACPI_ADD_PTR (ACPI_PRMT_MODULE_INFO, Table, CurrentOffset); + Status = AcpiDmDumpTable (Table->Length, CurrentOffset, PrmtModuleInfo, + sizeof (ACPI_PRMT_MODULE_INFO), AcpiDmTableInfoPrmtModule); + + CurrentOffset += sizeof (ACPI_PRMT_MODULE_INFO); + + /* PRM handler information structure array */ + + for (j = 0; j < PrmtModuleInfo->HandlerInfoCount; ++j) + { + PrmtHandlerInfo = ACPI_ADD_PTR (ACPI_PRMT_HANDLER_INFO, Table, CurrentOffset); + Status = AcpiDmDumpTable (Table->Length, CurrentOffset, PrmtHandlerInfo, + sizeof (ACPI_PRMT_HANDLER_INFO), AcpiDmTableInfoPrmtHandler); + + CurrentOffset += sizeof (ACPI_PRMT_HANDLER_INFO); + } + } +} + + +/******************************************************************************* + * + * FUNCTION: AcpiDmDumpRgrt + * + * PARAMETERS: Table - A RGRT table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a RGRT + * + ******************************************************************************/ + +void +AcpiDmDumpRgrt ( + ACPI_TABLE_HEADER *Table) +{ + ACPI_STATUS Status; + ACPI_TABLE_RGRT *Subtable = ACPI_CAST_PTR (ACPI_TABLE_RGRT, Table); + UINT32 Offset = sizeof (ACPI_TABLE_RGRT); + + + /* Main table */ + + Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoRgrt); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Dump the binary image as a subtable */ + + Status = AcpiDmDumpTable (Table->Length, Offset, &Subtable->Image, + Table->Length - Offset, AcpiDmTableInfoRgrt0); + if (ACPI_FAILURE (Status)) + { + return; + } +} + /******************************************************************************* * diff -Nru fwts-21.05.00/src/acpica/source/common/dmtbdump3.c fwts-21.06.00/src/acpica/source/common/dmtbdump3.c --- fwts-21.05.00/src/acpica/source/common/dmtbdump3.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/common/dmtbdump3.c 2021-06-21 05:43:14.000000000 +0000 @@ -422,6 +422,65 @@ /******************************************************************************* * + * FUNCTION: AcpiDmDumpSvkl + * + * PARAMETERS: Table - A SVKL table + * + * RETURN: None + * + * DESCRIPTION: Format the contents of a SVKL. This is a variable-length + * table that contains an open-ended number of key subtables at + * the end of the header. + * + * NOTES: SVKL is essentially a flat table, with a small main table and + * a variable number of a single type of subtable. + * + ******************************************************************************/ + +void +AcpiDmDumpSvkl ( + ACPI_TABLE_HEADER *Table) +{ + ACPI_STATUS Status; + UINT32 Length = Table->Length; + UINT32 Offset = sizeof (ACPI_TABLE_SVKL); + ACPI_SVKL_KEY *Subtable; + + + /* Main table */ + + Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoSvkl); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* The rest of the table consists of subtables (single type) */ + + Subtable = ACPI_ADD_PTR (ACPI_SVKL_KEY, Table, Offset); + while (Offset < Table->Length) + { + /* Dump the subtable */ + + AcpiOsPrintf ("\n"); + Status = AcpiDmDumpTable (Table->Length, Offset, Subtable, + sizeof (ACPI_SVKL_KEY), AcpiDmTableInfoSvkl0); + if (ACPI_FAILURE (Status)) + { + return; + } + + /* Point to next subtable */ + + Offset += sizeof (ACPI_SVKL_KEY); + Subtable = ACPI_ADD_PTR (ACPI_SVKL_KEY, Subtable, + sizeof (ACPI_SVKL_KEY)); + } +} + + +/******************************************************************************* + * * FUNCTION: AcpiDmDumpTcpa * * PARAMETERS: Table - A TCPA table @@ -502,6 +561,7 @@ * DESCRIPTION: Format the contents of a TPM2. * ******************************************************************************/ + static void AcpiDmDumpTpm2Rev3 ( ACPI_TABLE_HEADER *Table) diff -Nru fwts-21.05.00/src/acpica/source/common/dmtbinfo1.c fwts-21.06.00/src/acpica/source/common/dmtbinfo1.c --- fwts-21.05.00/src/acpica/source/common/dmtbinfo1.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/common/dmtbinfo1.c 2021-06-21 05:43:14.000000000 +0000 @@ -297,6 +297,19 @@ /******************************************************************************* * + * BDAT - BIOS Data ACPI Table + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoBdat[] = +{ + {ACPI_DMT_GAS, ACPI_BDAT_OFFSET (Gas), "BDAT Generic Address", 0}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * * BERT - Boot Error Record table * ******************************************************************************/ diff -Nru fwts-21.05.00/src/acpica/source/common/dmtbinfo2.c fwts-21.06.00/src/acpica/source/common/dmtbinfo2.c --- fwts-21.05.00/src/acpica/source/common/dmtbinfo2.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/common/dmtbinfo2.c 2021-06-21 05:43:14.000000000 +0000 @@ -414,23 +414,24 @@ ACPI_DMT_TERMINATOR }; -/* Common Subtable header (one per Subtable) */ - -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHdr[] = -{ - {ACPI_DMT_IVRS, ACPI_IVRSH_OFFSET (Type), "Subtable Type", 0}, - {ACPI_DMT_UINT8, ACPI_IVRSH_OFFSET (Flags), "Flags", 0}, - {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (Length), "Length", DT_LENGTH}, - {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (DeviceId), "DeviceId", 0}, - ACPI_DMT_TERMINATOR -}; - /* IVRS subtables */ /* 0x10: I/O Virtualization Hardware Definition (IVHD) Block */ -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs0[] = +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHware1[] = { + {ACPI_DMT_IVRS, ACPI_IVRSH_OFFSET (Type), "Subtable Type", 0}, + {ACPI_DMT_UINT8, ACPI_IVRSH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_IVRS_FLAG_OFFSET (Flags,0), "HtTunEn", 0}, + {ACPI_DMT_FLAG1, ACPI_IVRS_FLAG_OFFSET (Flags,0), "PassPW", 0}, + {ACPI_DMT_FLAG2, ACPI_IVRS_FLAG_OFFSET (Flags,0), "ResPassPW", 0}, + {ACPI_DMT_FLAG3, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Isoc Control", 0}, + {ACPI_DMT_FLAG4, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Iotlb Support", 0}, + {ACPI_DMT_FLAG5, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Coherent", 0}, + {ACPI_DMT_FLAG6, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Prefetch Support", 0}, + {ACPI_DMT_FLAG7, ACPI_IVRS_FLAG_OFFSET (Flags,0), "PPR Support", 0}, + {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (Length), "Length", DT_LENGTH}, + {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (DeviceId), "DeviceId", 0}, {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (CapabilityOffset), "Capability Offset", 0}, {ACPI_DMT_UINT64, ACPI_IVRS0_OFFSET (BaseAddress), "Base Address", 0}, {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (PciSegmentGroup), "PCI Segment Group", 0}, @@ -439,24 +440,44 @@ ACPI_DMT_TERMINATOR }; -/* 0x10: I/O Virtualization Hardware Definition (IVHD) Block */ +/* 0x11, 0x40: I/O Virtualization Hardware Definition (IVHD) Block */ -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs01[] = +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHware23[] = { - {ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (CapabilityOffset), "Capability Offset", 0}, - {ACPI_DMT_UINT64, ACPI_IVRS01_OFFSET (BaseAddress), "Base Address", 0}, - {ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (PciSegmentGroup), "PCI Segment Group", 0}, - {ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (Info), "Virtualization Info", 0}, - {ACPI_DMT_UINT32, ACPI_IVRS01_OFFSET (Attributes), "Attributes", 0}, - {ACPI_DMT_UINT64, ACPI_IVRS01_OFFSET (EfrRegisterImage), "EFR Image", 0}, - {ACPI_DMT_UINT64, ACPI_IVRS01_OFFSET (Reserved), "Reserved", 0}, + {ACPI_DMT_IVRS, ACPI_IVRSH_OFFSET (Type), "Subtable Type", 0}, + {ACPI_DMT_UINT8, ACPI_IVRSH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_IVRS_FLAG_OFFSET (Flags,0), "HtTunEn", 0}, + {ACPI_DMT_FLAG1, ACPI_IVRS_FLAG_OFFSET (Flags,0), "PassPW", 0}, + {ACPI_DMT_FLAG2, ACPI_IVRS_FLAG_OFFSET (Flags,0), "ResPassPW", 0}, + {ACPI_DMT_FLAG3, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Isoc Control", 0}, + {ACPI_DMT_FLAG4, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Iotlb Support", 0}, + {ACPI_DMT_FLAG5, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Coherent", 0}, + {ACPI_DMT_FLAG6, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Prefetch Support", 0}, + {ACPI_DMT_FLAG7, ACPI_IVRS_FLAG_OFFSET (Flags,0), "PPR Support", 0}, + {ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (Header.Length), "Length", DT_LENGTH}, + {ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (Header.DeviceId), "DeviceId", 0}, + {ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (CapabilityOffset), "Capability Offset", 0}, + {ACPI_DMT_UINT64, ACPI_IVRS01_OFFSET (BaseAddress), "Base Address", 0}, + {ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (PciSegmentGroup), "PCI Segment Group", 0}, + {ACPI_DMT_UINT16, ACPI_IVRS01_OFFSET (Info), "Virtualization Info", 0}, + {ACPI_DMT_UINT32, ACPI_IVRS01_OFFSET (Attributes), "Attributes", 0}, + {ACPI_DMT_UINT64, ACPI_IVRS01_OFFSET (EfrRegisterImage), "EFR Image", 0}, + {ACPI_DMT_UINT64, ACPI_IVRS01_OFFSET (Reserved), "Reserved", 0}, ACPI_DMT_TERMINATOR }; -/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition (IVMD) Block */ +/* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition (IVMD) Device Entry Block */ -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[] = +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsMemory[] = { + {ACPI_DMT_IVRS, ACPI_IVRSH_OFFSET (Type), "Subtable Type", 0}, + {ACPI_DMT_UINT8, ACPI_IVRSH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, + {ACPI_DMT_FLAG0, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Unity", 0}, + {ACPI_DMT_FLAG1, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Readable", 0}, + {ACPI_DMT_FLAG2, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Writeable", 0}, + {ACPI_DMT_FLAG3, ACPI_IVRS_FLAG_OFFSET (Flags,0), "Exclusion Range", 0}, + {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (Length), "Length", DT_LENGTH}, + {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (DeviceId), "DeviceId", 0}, {ACPI_DMT_UINT16, ACPI_IVRS1_OFFSET (AuxData), "Auxiliary Data", 0}, {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (StartAddress), "Start Address", 0}, @@ -467,19 +488,26 @@ /* Device entry header for IVHD block */ #define ACPI_DMT_IVRS_DE_HEADER \ - {ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (Type), "Entry Type", 0}, \ + {ACPI_DMT_IVRS_DE, ACPI_IVRSD_OFFSET (Type), "Subtable Type", 0}, \ {ACPI_DMT_UINT16, ACPI_IVRSD_OFFSET (Id), "Device ID", 0}, \ - {ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (DataSetting), "Data Setting", 0} + {ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (DataSetting), "Data Setting (decoded below)", 0}, \ + {ACPI_DMT_FLAG0, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "INITPass", 0}, \ + {ACPI_DMT_FLAG1, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "EIntPass", 0}, \ + {ACPI_DMT_FLAG2, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "NMIPass", 0}, \ + {ACPI_DMT_FLAG3, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "Reserved", 0}, \ + {ACPI_DMT_FLAGS4, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "System MGMT", 0}, \ + {ACPI_DMT_FLAG6, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "LINT0 Pass", 0}, \ + {ACPI_DMT_FLAG7, ACPI_IVRSDE_FLAG_OFFSET (DataSetting, 0), "LINT1 Pass", 0} -/* 4-byte device entry */ +/* 4-byte device entry (Types 1,2,3,4) */ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs4[] = { ACPI_DMT_IVRS_DE_HEADER, - {ACPI_DMT_EXIT, 0, NULL, 0}, + ACPI_DMT_TERMINATOR }; -/* 8-byte device entry */ +/* 8-byte device entry (Type Alias Select, Alias Start of Range) */ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[] = { @@ -490,7 +518,7 @@ ACPI_DMT_TERMINATOR }; -/* 8-byte device entry */ +/* 8-byte device entry (Type Extended Select, Extended Start of Range) */ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8b[] = { @@ -499,7 +527,7 @@ ACPI_DMT_TERMINATOR }; -/* 8-byte device entry */ +/* 8-byte device entry (Type Special Device) */ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[] = { @@ -510,21 +538,50 @@ ACPI_DMT_TERMINATOR }; -/* Variable-length device entry */ +/* Variable-length Device Entry Type 0xF0 */ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid[] = { ACPI_DMT_IVRS_DE_HEADER, - {ACPI_DMT_NAME8, ACPI_IVRSHID_OFFSET (AcpiHid), "ACPI HID", 0}, - {ACPI_DMT_NAME8, ACPI_IVRSHID_OFFSET (AcpiCid), "ACPI CID", 0}, - {ACPI_DMT_UINT8, ACPI_IVRSHID_OFFSET (UidType), "UID Format", DT_DESCRIBES_OPTIONAL}, - {ACPI_DMT_UINT8, ACPI_IVRSHID_OFFSET (UidLength), "UID Length", DT_DESCRIBES_OPTIONAL}, ACPI_DMT_TERMINATOR }; -ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid1[] = +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsUidString[] = +{ + {ACPI_DMT_UINT8, 0, "UID Format", DT_DESCRIBES_OPTIONAL}, + {ACPI_DMT_UINT8, 1, "UID Length", DT_DESCRIBES_OPTIONAL}, + {ACPI_DMT_IVRS_UNTERMINATED_STRING, 2, "UID", DT_OPTIONAL}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsUidInteger[] = +{ + {ACPI_DMT_UINT8, 0, "UID Format", DT_DESCRIBES_OPTIONAL}, + {ACPI_DMT_UINT8, 1, "UID Length", DT_DESCRIBES_OPTIONAL}, + {ACPI_DMT_UINT64, 2, "UID", DT_OPTIONAL}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHidString[] = +{ + {ACPI_DMT_NAME8, 0, "ACPI HID", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHidInteger[] = +{ + {ACPI_DMT_UINT64, 0, "ACPI HID", 0}, + ACPI_DMT_TERMINATOR +}; +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsCidString[] = +{ + {ACPI_DMT_NAME8, 0, "ACPI CID", 0}, + ACPI_DMT_TERMINATOR +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsCidInteger[] = { - {ACPI_DMT_RAW_BUFFER, 0, "UID", DT_OPTIONAL}, + {ACPI_DMT_UINT64, 0, "ACPI CID", 0}, ACPI_DMT_TERMINATOR }; @@ -1539,6 +1596,52 @@ /******************************************************************************* * + * PRMT - Platform Runtime Mechanism Table + * Version 1 + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHdr[] = +{ + {ACPI_DMT_UUID, ACPI_PRMTH_OFFSET (PlatformGuid[0]), "Platform GUID", 0}, + {ACPI_DMT_UINT32, ACPI_PRMTH_OFFSET (ModuleInfoOffset), "Module info offset", 0}, + {ACPI_DMT_UINT32, ACPI_PRMTH_OFFSET (ModuleInfoCount), "Module info count", 0}, + ACPI_DMT_NEW_LINE, + ACPI_DMT_TERMINATOR + +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtModule[] = +{ + {ACPI_DMT_UINT16, ACPI_PRMT0_OFFSET (Revision), "Revision", 0}, + {ACPI_DMT_UINT16, ACPI_PRMT0_OFFSET (Length), "Length", 0}, + {ACPI_DMT_UUID, ACPI_PRMT0_OFFSET (ModuleGuid[0]), "Module GUID", 0}, + {ACPI_DMT_UINT16, ACPI_PRMT0_OFFSET (MajorRev), "Major Revision", 0}, + {ACPI_DMT_UINT16, ACPI_PRMT0_OFFSET (MinorRev), "Minor Revision", 0}, + {ACPI_DMT_UINT16, ACPI_PRMT0_OFFSET (HandlerInfoCount), "Handler Info Count", 0}, + {ACPI_DMT_UINT32, ACPI_PRMT0_OFFSET (HandlerInfoOffset), "Handler Info Offset", 0}, + {ACPI_DMT_UINT64, ACPI_PRMT0_OFFSET (MmioListPointer), "Mmio List pointer", 0}, + ACPI_DMT_NEW_LINE, + ACPI_DMT_TERMINATOR + +}; + +ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHandler[] = +{ + {ACPI_DMT_UINT16, ACPI_PRMT1_OFFSET (Revision), "Revision", 0}, + {ACPI_DMT_UINT16, ACPI_PRMT1_OFFSET (Length), "Length", 0}, + {ACPI_DMT_UUID, ACPI_PRMT1_OFFSET (HandlerGuid[0]), "Handler GUID", 0}, + {ACPI_DMT_UINT64, ACPI_PRMT1_OFFSET (HandlerAddress), "Handler address", 0}, + {ACPI_DMT_UINT64, ACPI_PRMT1_OFFSET (StaticDataBufferAddress),"Satic Data Address", 0}, + {ACPI_DMT_UINT64, ACPI_PRMT1_OFFSET (AcpiParamBufferAddress), "ACPI Parameter Address", 0}, + ACPI_DMT_NEW_LINE, + ACPI_DMT_TERMINATOR + +}; + + +/******************************************************************************* + * * RASF - RAS Feature table * ******************************************************************************/ @@ -1552,6 +1655,31 @@ /******************************************************************************* * + * RGRT - Regulatory Graphics Resource Table + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt[] = +{ + {ACPI_DMT_UINT16, ACPI_RGRT_OFFSET (Version), "Version", 0}, + {ACPI_DMT_RGRT, ACPI_RGRT_OFFSET (ImageType), "Image Type", 0}, + {ACPI_DMT_UINT8, ACPI_RGRT_OFFSET (Reserved), "Reserved", 0}, + ACPI_DMT_TERMINATOR +}; + +/* + * We treat the binary image field as its own subtable (to make + * ACPI_DMT_RAW_BUFFER work properly). + */ +ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt0[] = +{ + {ACPI_DMT_RAW_BUFFER, 0, "Image", 0}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * * S3PT - S3 Performance Table * ******************************************************************************/ @@ -1734,4 +1862,5 @@ {ACPI_DMT_RAW_BUFFER, 0, "Vendor Data", 0}, /*, DT_OPTIONAL}, */ ACPI_DMT_TERMINATOR }; + /*! [End] no source code translation !*/ diff -Nru fwts-21.05.00/src/acpica/source/common/dmtbinfo3.c fwts-21.06.00/src/acpica/source/common/dmtbinfo3.c --- fwts-21.05.00/src/acpica/source/common/dmtbinfo3.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/common/dmtbinfo3.c 2021-06-21 05:43:14.000000000 +0000 @@ -405,6 +405,30 @@ /******************************************************************************* * + * SVKL - Storage Volume Key Location table + * + ******************************************************************************/ + +ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl[] = +{ + {ACPI_DMT_UINT32, ACPI_SVKL_OFFSET (Count), "Key Count", 0}, + ACPI_DMT_TERMINATOR +}; + +/* SVKL subtables */ + +ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl0[] = +{ + {ACPI_DMT_UINT16, ACPI_SVKL0_OFFSET (Type), "Key Type", 0}, + {ACPI_DMT_UINT16, ACPI_SVKL0_OFFSET (Format), "Key Format", 0}, + {ACPI_DMT_UINT32, ACPI_SVKL0_OFFSET (Size), "Key Size", 0}, + {ACPI_DMT_UINT64, ACPI_SVKL0_OFFSET (Address), "Key Address", 0}, + ACPI_DMT_TERMINATOR +}; + + +/******************************************************************************* + * * TCPA - Trusted Computing Platform Alliance table (Client) * * NOTE: There are two versions of the table with the same signature -- diff -Nru fwts-21.05.00/src/acpica/source/compiler/aslcompiler.h fwts-21.06.00/src/acpica/source/compiler/aslcompiler.h --- fwts-21.05.00/src/acpica/source/compiler/aslcompiler.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/compiler/aslcompiler.h 2021-06-21 05:43:14.000000000 +0000 @@ -1224,6 +1224,10 @@ #define ASL_PARSE_OUTPUT 1 #define ASL_TREE_OUTPUT 2 +BOOLEAN +UtIsIdInteger ( + UINT8 *Target); + UINT8 UtIsBigEndianMachine ( void); diff -Nru fwts-21.05.00/src/acpica/source/compiler/aslmessages.c fwts-21.06.00/src/acpica/source/compiler/aslmessages.c --- fwts-21.05.00/src/acpica/source/compiler/aslmessages.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/compiler/aslmessages.c 2021-06-21 05:43:14.000000000 +0000 @@ -400,14 +400,16 @@ /* ASL_MSG_INVALID_FIELD_NAME */ "Invalid Field Name", /* ASL_MSG_INVALID_HEX_INTEGER */ "Invalid hex integer constant", /* ASL_MSG_OEM_TABLE */ "OEM table - unknown contents", -/* ASL_MSG_RESERVED_VALUE */ "Reserved field", +/* ASL_MSG_RESERVED_FIELD */ "Reserved field", /* ASL_MSG_UNKNOWN_LABEL */ "Label is undefined", /* ASL_MSG_UNKNOWN_SUBTABLE */ "Unknown subtable type", /* ASL_MSG_UNKNOWN_TABLE */ "Unknown ACPI table signature", /* ASL_MSG_ZERO_VALUE */ "Value must be non-zero", /* ASL_MSG_INVALID_LABEL */ "Invalid field label detected", /* ASL_MSG_BUFFER_LIST */ "Invalid buffer initializer list", -/* ASL_MSG_ENTRY_LIST */ "Invalid entry initializer list" +/* ASL_MSG_ENTRY_LIST */ "Invalid entry initializer list", +/* ASL_MSG_UNKNOWN_FORMAT */ "Unknown format value", +/* ASL_MSG_RESERVED_VALUE */ "Value for field is reserved or unknown", }; /* Preprocessor */ diff -Nru fwts-21.05.00/src/acpica/source/compiler/aslmessages.h fwts-21.06.00/src/acpica/source/compiler/aslmessages.h --- fwts-21.05.00/src/acpica/source/compiler/aslmessages.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/compiler/aslmessages.h 2021-06-21 05:43:14.000000000 +0000 @@ -402,7 +402,7 @@ ASL_MSG_INVALID_FIELD_NAME, ASL_MSG_INVALID_HEX_INTEGER, ASL_MSG_OEM_TABLE, - ASL_MSG_RESERVED_VALUE, + ASL_MSG_RESERVED_FIELD, ASL_MSG_UNKNOWN_LABEL, ASL_MSG_UNKNOWN_SUBTABLE, ASL_MSG_UNKNOWN_TABLE, @@ -410,6 +410,8 @@ ASL_MSG_INVALID_LABEL, ASL_MSG_BUFFER_LIST, ASL_MSG_ENTRY_LIST, + ASL_MSG_UNKNOWN_FORMAT, + ASL_MSG_RESERVED_VALUE, /* These messages are used by the Preprocessor only */ diff -Nru fwts-21.05.00/src/acpica/source/compiler/aslutils.c fwts-21.06.00/src/acpica/source/compiler/aslutils.c --- fwts-21.05.00/src/acpica/source/compiler/aslutils.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/compiler/aslutils.c 2021-06-21 05:43:14.000000000 +0000 @@ -206,6 +206,46 @@ } +/******************************************************************************* + * + * FUNCTION: UtIsIdInteger + * + * PARAMETERS: Pointer to an ACPI ID (HID, CID) string + * + * RETURN: TRUE if string is an integer + * FALSE if string is not an integer + * + * DESCRIPTION: Determine whether the input ACPI ID string can be converted to + * an integer value. + * + ******************************************************************************/ + +BOOLEAN +UtIsIdInteger ( + UINT8 *Target) +{ + UINT32 i; + + + /* The first three characters of the string must be alphabetic */ + + for (i = 0; i < 3; i++) + { + if (!isalpha ((int) Target[i])) + { + break; + } + } + + if (i < 3) + { + return (TRUE); + } + + return (FALSE); +} + + /****************************************************************************** * * FUNCTION: UtQueryForOverwrite diff -Nru fwts-21.05.00/src/acpica/source/compiler/asluuid.c fwts-21.06.00/src/acpica/source/compiler/asluuid.c --- fwts-21.05.00/src/acpica/source/compiler/asluuid.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/compiler/asluuid.c 2021-06-21 05:43:14.000000000 +0000 @@ -212,50 +212,3 @@ return (AE_OK); } - -/******************************************************************************* - * - * FUNCTION: AuConvertUuidToString - * - * PARAMETERS: UuidBuffer - 16-byte UUID buffer - * OutString - 36-byte formatted UUID string - * - * RETURN: Status - * - * DESCRIPTION: Convert 16-byte UUID buffer to 36-byte formatted UUID string - * OutString must be 37 bytes to include null terminator. - * - ******************************************************************************/ - -ACPI_STATUS -AuConvertUuidToString ( - char *UuidBuffer, - char *OutString) -{ - UINT32 i; - - - if (!UuidBuffer || !OutString) - { - return (AE_BAD_PARAMETER); - } - - for (i = 0; i < UUID_BUFFER_LENGTH; i++) - { - OutString[AcpiGbl_MapToUuidOffset[i]] = - AcpiUtHexToAsciiChar (UuidBuffer[i], 4); - - OutString[AcpiGbl_MapToUuidOffset[i] + 1] = - AcpiUtHexToAsciiChar (UuidBuffer[i], 0); - } - - /* Insert required hyphens (dashes) */ - - OutString[UUID_HYPHEN1_OFFSET] = - OutString[UUID_HYPHEN2_OFFSET] = - OutString[UUID_HYPHEN3_OFFSET] = - OutString[UUID_HYPHEN4_OFFSET] = '-'; - - OutString[UUID_STRING_LENGTH] = 0; /* Null terminate */ - return (AE_OK); -} diff -Nru fwts-21.05.00/src/acpica/source/compiler/dtcompiler.h fwts-21.06.00/src/acpica/source/compiler/dtcompiler.h --- fwts-21.05.00/src/acpica/source/compiler/dtcompiler.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/compiler/dtcompiler.h 2021-06-21 05:43:14.000000000 +0000 @@ -674,6 +674,14 @@ void **PFieldList); ACPI_STATUS +DtCompilePrmt ( + void **PFieldList); + +ACPI_STATUS +DtCompileRgrt ( + void **PFieldList); + +ACPI_STATUS DtCompileRsdt ( void **PFieldList); @@ -702,6 +710,10 @@ void **PFieldList); ACPI_STATUS +DtCompileSvkl ( + void **PFieldList); + +ACPI_STATUS DtCompileTcpa ( void **PFieldList); @@ -743,6 +755,7 @@ extern const unsigned char TemplateAsf[]; extern const unsigned char TemplateBoot[]; +extern const unsigned char TemplateBdat[]; extern const unsigned char TemplateBert[]; extern const unsigned char TemplateBgrt[]; extern const unsigned char TemplateCedt[]; @@ -776,7 +789,9 @@ extern const unsigned char TemplatePhat[]; extern const unsigned char TemplatePmtt[]; extern const unsigned char TemplatePptt[]; +extern const unsigned char TemplatePrmt[]; extern const unsigned char TemplateRasf[]; +extern const unsigned char TemplateRgrt[]; extern const unsigned char TemplateRsdt[]; extern const unsigned char TemplateS3pt[]; extern const unsigned char TemplateSbst[]; @@ -788,6 +803,7 @@ extern const unsigned char TemplateSpmi[]; extern const unsigned char TemplateSrat[]; extern const unsigned char TemplateStao[]; +extern const unsigned char TemplateSvkl[]; extern const unsigned char TemplateTcpa[]; extern const unsigned char TemplateTpm2[]; extern const unsigned char TemplateUefi[]; diff -Nru fwts-21.05.00/src/acpica/source/compiler/dtfield.c fwts-21.06.00/src/acpica/source/compiler/dtfield.c --- fwts-21.05.00/src/acpica/source/compiler/dtfield.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/compiler/dtfield.c 2021-06-21 05:43:14.000000000 +0000 @@ -434,14 +434,14 @@ { if (Value != 1) { - DtError (ASL_WARNING, ASL_MSG_RESERVED_VALUE, Field, + DtError (ASL_WARNING, ASL_MSG_RESERVED_FIELD, Field, "Must be one, setting to one"); Value = 1; } } else if (Value != 0) { - DtError (ASL_WARNING, ASL_MSG_RESERVED_VALUE, Field, + DtError (ASL_WARNING, ASL_MSG_RESERVED_FIELD, Field, "Must be zero, setting to zero"); Value = 0; } diff -Nru fwts-21.05.00/src/acpica/source/compiler/dtio.c fwts-21.06.00/src/acpica/source/compiler/dtio.c --- fwts-21.05.00/src/acpica/source/compiler/dtio.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/compiler/dtio.c 2021-06-21 05:43:14.000000000 +0000 @@ -1086,9 +1086,9 @@ { DbgPrint (ASL_DEBUG_OUTPUT, - "[%.04X] %24s %*s%p (%.02X) - (%.02X)\n", + "[%.04X] %24s %*s%p (%.02X) - (%.02X) %.02X\n", Subtable->Depth, Subtable->Name, (4 * Subtable->Depth), " ", - Subtable, Subtable->Length, Subtable->TotalLength); + Subtable, Subtable->Length, Subtable->TotalLength, *Subtable->Buffer); } @@ -1123,7 +1123,7 @@ DtWalkTableTree (AslGbl_RootTable, DtDumpSubtableInfo, NULL, NULL); DbgPrint (ASL_DEBUG_OUTPUT, - "\nSubtable Tree: (Depth, Name, Subtable, Length, TotalLength)\n\n"); + "\nSubtable Tree: (Depth, Name, Subtable, Length, TotalLength, Integer Value)\n\n"); DtWalkTableTree (AslGbl_RootTable, DtDumpSubtableTree, NULL, NULL); DbgPrint (ASL_DEBUG_OUTPUT, "\n"); diff -Nru fwts-21.05.00/src/acpica/source/compiler/dttable1.c fwts-21.06.00/src/acpica/source/compiler/dttable1.c --- fwts-21.05.00/src/acpica/source/compiler/dttable1.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/compiler/dttable1.c 2021-06-21 05:43:14.000000000 +0000 @@ -2058,7 +2058,18 @@ * * RETURN: Status * - * DESCRIPTION: Compile IVRS. + * DESCRIPTION: Compile IVRS. Notes: + * The IVRS is essentially a flat table, with the following + * structure: + *
+ *
+ * + * + * ... + * + * + * + * ... * *****************************************************************************/ @@ -2069,13 +2080,17 @@ ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; + DT_SUBTABLE *MainSubtable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; - ACPI_DMTABLE_INFO *InfoTable; - ACPI_IVRS_HEADER *IvrsHeader; - UINT8 EntryType; + ACPI_DMTABLE_INFO *InfoTable = NULL; + UINT8 SubtableType; + UINT8 Temp64[16]; + UINT8 Temp8; + /* Main table */ + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrs, &Subtable); if (ACPI_FAILURE (Status)) @@ -2085,122 +2100,263 @@ ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); + DtPushSubtable (Subtable); + + /* Save a pointer to the main subtable */ + + MainSubtable = Subtable; while (*PFieldList) { SubtableStart = *PFieldList; - Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHdr, - &Subtable); - if (ACPI_FAILURE (Status)) - { - return (Status); - } - ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); - DtPushSubtable (Subtable); + /* Compile the SubtableType integer */ - IvrsHeader = ACPI_CAST_PTR (ACPI_IVRS_HEADER, Subtable->Buffer); + DtCompileInteger (&SubtableType, *PFieldList, 1, 0); - switch (IvrsHeader->Type) + switch (SubtableType) { + + /* Type 10h, IVHD (I/O Virtualization Hardware Definition) */ + case ACPI_IVRS_TYPE_HARDWARE1: - InfoTable = AcpiDmTableInfoIvrs0; + InfoTable = AcpiDmTableInfoIvrsHware1; break; + /* Types 11h, 40h, IVHD (I/O Virtualization Hardware Definition) */ + case ACPI_IVRS_TYPE_HARDWARE2: + case ACPI_IVRS_TYPE_HARDWARE3: - InfoTable = AcpiDmTableInfoIvrs01; + InfoTable = AcpiDmTableInfoIvrsHware23; break; + /* Types 20h, 21h, 22h, IVMD (I/O Virtualization Memory Definition Block) */ + case ACPI_IVRS_TYPE_MEMORY1: case ACPI_IVRS_TYPE_MEMORY2: case ACPI_IVRS_TYPE_MEMORY3: - InfoTable = AcpiDmTableInfoIvrs1; + InfoTable = AcpiDmTableInfoIvrsMemory; + break; + + /* 4-byte device entries */ + + case ACPI_IVRS_TYPE_PAD4: + case ACPI_IVRS_TYPE_ALL: + case ACPI_IVRS_TYPE_SELECT: + case ACPI_IVRS_TYPE_START: + case ACPI_IVRS_TYPE_END: + + InfoTable = AcpiDmTableInfoIvrs4; + break; + + /* 8-byte device entries, type A */ + + case ACPI_IVRS_TYPE_ALIAS_SELECT: + case ACPI_IVRS_TYPE_ALIAS_START: + + InfoTable = AcpiDmTableInfoIvrs8a; + break; + + /* 8-byte device entries, type B */ + + case ACPI_IVRS_TYPE_EXT_SELECT: + case ACPI_IVRS_TYPE_EXT_START: + + InfoTable = AcpiDmTableInfoIvrs8b; + break; + + /* 8-byte device entries, type C */ + + case ACPI_IVRS_TYPE_SPECIAL: + + InfoTable = AcpiDmTableInfoIvrs8c; + break; + + /* Variable device entries, type F0h */ + + case ACPI_IVRS_TYPE_HID: + + InfoTable = AcpiDmTableInfoIvrsHid; break; default: - DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "IVRS"); + DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, + "IVRS Device Entry"); return (AE_ERROR); } - Status = DtCompileTable (PFieldList, InfoTable, &Subtable); + /* Compile the InfoTable from above */ + + Status = DtCompileTable (PFieldList, InfoTable, + &Subtable); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); - DtInsertSubtable (ParentTable, Subtable); + if (SubtableType != ACPI_IVRS_TYPE_HARDWARE1 && + SubtableType != ACPI_IVRS_TYPE_HARDWARE2 && + SubtableType != ACPI_IVRS_TYPE_HARDWARE3 && + SubtableType != ACPI_IVRS_TYPE_HID && + SubtableType != ACPI_IVRS_TYPE_MEMORY1 && + SubtableType != ACPI_IVRS_TYPE_MEMORY2 && + SubtableType != ACPI_IVRS_TYPE_MEMORY3) + { + if (ParentTable) + DtInsertSubtable (ParentTable, Subtable); + } - if (IvrsHeader->Type == ACPI_IVRS_TYPE_HARDWARE1 || - IvrsHeader->Type == ACPI_IVRS_TYPE_HARDWARE2) + switch (SubtableType) { - while (*PFieldList && - !strcmp ((*PFieldList)->Name, "Entry Type")) + case ACPI_IVRS_TYPE_HARDWARE1: + case ACPI_IVRS_TYPE_HARDWARE2: + case ACPI_IVRS_TYPE_HARDWARE3: + case ACPI_IVRS_TYPE_MEMORY1: + case ACPI_IVRS_TYPE_MEMORY2: + case ACPI_IVRS_TYPE_MEMORY3: + + /* Insert these IVHDs/IVMDs at the root subtable */ + + DtInsertSubtable (MainSubtable, Subtable); + DtPushSubtable (Subtable); + ParentTable = MainSubtable; + break; + + case ACPI_IVRS_TYPE_HID: + + /* Special handling for the HID named device entry (0xF0) */ + + if (ParentTable) { - SubtableStart = *PFieldList; - DtCompileInteger (&EntryType, *PFieldList, 1, 0); + DtInsertSubtable (ParentTable, Subtable); + } + + /* + * Process the HID value. First, get the HID value as a string. + */ + DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 16, DT_FIELD_TYPE_STRING, 0); + + /* + * Determine if the HID is an integer or a string. + * An integer is defined to be 32 bits, with the upper 32 bits + * set to zero. (from the ACPI Spec): "The HID can be a 32-bit + * integer or a character string. If an integer, the lower + * 4 bytes of the field contain the integer and the upper + * 4 bytes are padded with 0". + */ + if (UtIsIdInteger ((UINT8 *) &Temp64)) + { + /* Compile the HID value as an integer */ + + DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 8, DT_FIELD_TYPE_INTEGER, 0); - switch (EntryType) + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHidInteger, + &Subtable); + if (ACPI_FAILURE (Status)) { - /* 4-byte device entries */ + return (Status); + } + } + else + { + /* Compile the HID value as a string */ - case ACPI_IVRS_TYPE_PAD4: - case ACPI_IVRS_TYPE_ALL: - case ACPI_IVRS_TYPE_SELECT: - case ACPI_IVRS_TYPE_START: - case ACPI_IVRS_TYPE_END: + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHidString, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + } - InfoTable = AcpiDmTableInfoIvrs4; - break; + DtInsertSubtable (ParentTable, Subtable); - /* 8-byte entries, type A */ + /* + * Process the CID value. First, get the CID value as a string. + */ + DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 16, DT_FIELD_TYPE_STRING, 0); - case ACPI_IVRS_TYPE_ALIAS_SELECT: - case ACPI_IVRS_TYPE_ALIAS_START: + if (UtIsIdInteger ((UINT8 *) &Temp64)) + { + /* Compile the CID value as an integer */ - InfoTable = AcpiDmTableInfoIvrs8a; - break; + DtCompileOneField ((UINT8 *) &Temp64, *PFieldList, 8, DT_FIELD_TYPE_INTEGER, 0); - /* 8-byte entries, type B */ + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsCidInteger, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + } + else + { + /* Compile the CID value as a string */ - case ACPI_IVRS_TYPE_PAD8: - case ACPI_IVRS_TYPE_EXT_SELECT: - case ACPI_IVRS_TYPE_EXT_START: + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsCidString, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + } - InfoTable = AcpiDmTableInfoIvrs8b; - break; + DtInsertSubtable (ParentTable, Subtable); - /* 8-byte entries, type C */ + /* + * Process the UID value. First, get and decode the "UID Format" field (Integer). + */ + if (!*PFieldList) + { + return (AE_OK); + } - case ACPI_IVRS_TYPE_SPECIAL: + DtCompileOneField (&Temp8, *PFieldList, 1, DT_FIELD_TYPE_INTEGER, 0); - InfoTable = AcpiDmTableInfoIvrs8c; - break; + switch (Temp8) + { + case ACPI_IVRS_UID_NOT_PRESENT: + break; - default: + case ACPI_IVRS_UID_IS_INTEGER: - DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, - "IVRS Device Entry"); - return (AE_ERROR); + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsUidInteger, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); } + DtInsertSubtable (ParentTable, Subtable); + break; - Status = DtCompileTable (PFieldList, InfoTable, + case ACPI_IVRS_UID_IS_STRING: + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsUidString, &Subtable); if (ACPI_FAILURE (Status)) { return (Status); } - DtInsertSubtable (ParentTable, Subtable); + break; + + default: + + DtFatal (ASL_MSG_UNKNOWN_FORMAT, SubtableStart, + "IVRS Device Entry"); + return (AE_ERROR); } - } - DtPopSubtable (); + default: + + /* All other subtable types come through here */ + break; + } } return (AE_OK); diff -Nru fwts-21.05.00/src/acpica/source/compiler/dttable2.c fwts-21.06.00/src/acpica/source/compiler/dttable2.c --- fwts-21.05.00/src/acpica/source/compiler/dttable2.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/compiler/dttable2.c 2021-06-21 05:43:14.000000000 +0000 @@ -1337,6 +1337,118 @@ /****************************************************************************** * + * FUNCTION: DtCompilePrmt + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile PRMT. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompilePrmt ( + void **List) +{ + ACPI_STATUS Status; + ACPI_TABLE_PRMT_HEADER *PrmtHeader; + ACPI_PRMT_MODULE_INFO *PrmtModuleInfo; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + UINT32 i, j; + + ParentTable = DtPeekSubtable (); + + /* Compile PRMT subtable header */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPrmtHdr, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + DtInsertSubtable (ParentTable, Subtable); + PrmtHeader = ACPI_CAST_PTR (ACPI_TABLE_PRMT_HEADER, Subtable->Buffer); + + for (i = 0; i < PrmtHeader->ModuleInfoCount; i++) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPrmtModule, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + DtInsertSubtable (ParentTable, Subtable); + PrmtModuleInfo = ACPI_CAST_PTR (ACPI_PRMT_MODULE_INFO, Subtable->Buffer); + + for (j = 0; j < PrmtModuleInfo->HandlerInfoCount; j++) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoPrmtHandler, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + DtInsertSubtable (ParentTable, Subtable); + } + } + + return (AE_OK); +} + + +/****************************************************************************** + * + * FUNCTION: DtCompileRgrt + * + * PARAMETERS: List - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile RGRT. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileRgrt ( + void **List) +{ + ACPI_STATUS Status; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + DT_FIELD **PFieldList = (DT_FIELD **) List; + + + /* Compile the main table */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRgrt, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + /* Compile the "Subtable" -- actually just the binary (PNG) image */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoRgrt0, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + DtInsertSubtable (ParentTable, Subtable); + return (AE_OK); +} + + +/****************************************************************************** + * * FUNCTION: DtCompileRsdt * * PARAMETERS: List - Current field list pointer @@ -2013,6 +2125,63 @@ &Subtable); if (ACPI_FAILURE (Status)) { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + } + + return (AE_OK); +} + + + +/****************************************************************************** + * + * FUNCTION: DtCompileSvkl + * + * PARAMETERS: PFieldList - Current field list pointer + * + * RETURN: Status + * + * DESCRIPTION: Compile SVKL. + * + * NOTES: SVKL is essentially a flat table, with a small main table and + * a variable number of a single type of subtable. + * + *****************************************************************************/ + +ACPI_STATUS +DtCompileSvkl ( + void **List) +{ + DT_FIELD **PFieldList = (DT_FIELD **) List; + DT_SUBTABLE *Subtable; + DT_SUBTABLE *ParentTable; + ACPI_STATUS Status; + + + /* Compile the main table */ + + Status = DtCompileTable (PFieldList, AcpiDmTableInfoSvkl, + &Subtable); + if (ACPI_FAILURE (Status)) + { + return (Status); + } + + ParentTable = DtPeekSubtable (); + DtInsertSubtable (ParentTable, Subtable); + + /* Compile each subtable */ + + while (*PFieldList) + { + Status = DtCompileTable (PFieldList, AcpiDmTableInfoSvkl0, + &Subtable); + if (ACPI_FAILURE (Status)) + { return (Status); } diff -Nru fwts-21.05.00/src/acpica/source/compiler/dttemplate.h fwts-21.06.00/src/acpica/source/compiler/dttemplate.h --- fwts-21.05.00/src/acpica/source/compiler/dttemplate.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/compiler/dttemplate.h 2021-06-21 05:43:14.000000000 +0000 @@ -174,6 +174,16 @@ 0x01,0x00 /* 00000070 ".." */ }; +const unsigned char TemplateBdat[] = +{ + 0x42,0x44,0x41,0x54,0x30,0x00,0x00,0x00, /* 00000000 "BDAT0..." */ + 0x01,0xED,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x31,0x03,0x21,0x20,0x01,0x08,0x00,0x01, /* 00000020 "1.! ...." */ + 0xF0,0xDE,0xBC,0x9A,0x78,0x56,0x34,0x12 /* 00000028 "....xV4." */ +}; + const unsigned char TemplateBgrt[] = { 0x42,0x47,0x52,0x54,0x38,0x00,0x00,0x00, /* 00000000 "BGRT8..." */ @@ -794,30 +804,72 @@ const unsigned char TemplateIvrs[] = { - 0x49,0x56,0x52,0x53,0xBC,0x00,0x00,0x00, /* 00000000 "IVRS...." */ - 0x01,0x87,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x49,0x56,0x52,0x53,0x10,0x02,0x00,0x00, /* 00000000 "IVRS...." */ + 0x02,0x6C,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".lINTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ - 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ + 0x31,0x03,0x21,0x20,0x41,0x30,0x20,0x00, /* 00000020 "1.! A0 ." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ - 0x10,0x14,0x34,0x00,0x00,0x00,0x00,0x00, /* 00000030 "..4....." */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ - 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00, /* 00000048 "....@..." */ - 0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00, /* 00000050 "....B..." */ - 0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00, /* 00000058 "....H..." */ - 0x00,0x00,0x00,0x00,0x20,0x08,0x20,0x00, /* 00000060 ".... . ." */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ - 0x00,0x00,0x00,0x00,0x21,0x04,0x20,0x00, /* 00000080 "....!. ." */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000090 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ - 0x00,0x00,0x00,0x00,0x10,0x14,0x18,0x00, /* 000000A0 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ - 0x00,0x00,0x00,0x00 /* 000000B8 "...." */ + 0x10,0xB0,0x64,0x00,0x02,0x00,0x40,0x00, /* 00000030 "..d...@." */ + 0x00,0x00,0xF0,0xFD,0x00,0x00,0x00,0x00, /* 00000038 "........" */ + 0x00,0x00,0x00,0x00,0x6F,0x8F,0x04,0x80, /* 00000040 "....o..." */ + 0x03,0x08,0x00,0x00,0x01,0x08,0x00,0x00, /* 00000048 "........" */ + 0x02,0x08,0x00,0x00,0x04,0xFE,0xFF,0x00, /* 00000050 "........" */ + 0x42,0x00,0xFF,0x00,0x00,0xA5,0x00,0x00, /* 00000058 "B......." */ + 0x43,0x00,0xFF,0x00,0x00,0xA5,0x00,0x00, /* 00000060 "C......." */ + 0x46,0x00,0xFF,0x00,0x44,0x33,0x22,0x11, /* 00000068 "F...D3"." */ + 0x47,0x00,0xFF,0x00,0x44,0x33,0x22,0x11, /* 00000070 "G...D3"." */ + 0x04,0xFF,0xFF,0x00,0x48,0x00,0x00,0x00, /* 00000078 "....H..." */ + 0x00,0xA0,0x00,0x02,0x48,0x00,0x00,0xD7, /* 00000080 "....H..." */ + 0x21,0xA0,0x00,0x01,0x48,0x00,0x00,0x00, /* 00000088 "!...H..." */ + 0x22,0x01,0x00,0x01,0x11,0xB0,0x48,0x00, /* 00000090 "".....H." */ + 0x02,0x00,0x40,0x00,0x00,0x00,0xF0,0xFD, /* 00000098 "..@....." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ + 0x00,0x02,0x04,0x00,0xDE,0x4A,0x25,0x22, /* 000000A8 ".....J%"" */ + 0xEF,0x73,0x6D,0x20,0x00,0x00,0x00,0x00, /* 000000B0 ".sm ...." */ + 0x00,0x00,0x00,0x00,0x03,0x08,0x00,0x00, /* 000000B8 "........" */ + 0x04,0xFE,0xFF,0x00,0x43,0x00,0xFF,0x00, /* 000000C0 "....C..." */ + 0x00,0xA5,0x00,0x00,0x04,0xFF,0xFF,0x00, /* 000000C8 "........" */ + 0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00, /* 000000D0 "....H..." */ + 0x00,0xA0,0x00,0x02,0x40,0xB0,0xD4,0x00, /* 000000D8 "....@..." */ + 0x02,0x00,0x40,0x00,0x00,0x00,0xF0,0xFD, /* 000000E0 "..@....." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */ + 0x00,0x02,0x04,0x00,0xDE,0x4A,0x25,0x22, /* 000000F0 ".....J%"" */ + 0xEF,0x73,0x6D,0x20,0x00,0x00,0x00,0x00, /* 000000F8 ".sm ...." */ + 0x00,0x00,0x00,0x00,0x03,0x08,0x00,0x00, /* 00000100 "........" */ + 0x04,0xFE,0xFF,0x00,0x43,0x00,0xFF,0x00, /* 00000108 "....C..." */ + 0x00,0xA5,0x00,0x00,0x04,0xFF,0xFF,0x00, /* 00000110 "........" */ + 0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00, /* 00000118 "....H..." */ + 0x00,0xA0,0x00,0x02,0x48,0x00,0x00,0xD7, /* 00000120 "....H..." */ + 0x21,0xA0,0x00,0x01,0x48,0x00,0x00,0x00, /* 00000128 "!...H..." */ + 0x22,0x01,0x00,0x01,0xF0,0xA5,0x00,0x40, /* 00000130 ""......@" */ + 0x49,0x4E,0x54,0x43,0x30,0x30,0x32,0x30, /* 00000138 "INTC0020" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000140 "........" */ + 0x02,0x09,0x5C,0x5F,0x53,0x42,0x2E,0x44, /* 00000148 "..\_SB.D" */ + 0x45,0x56,0x30,0xF0,0xA5,0x00,0x40,0x49, /* 00000150 "EV0...@I" */ + 0x4E,0x54,0x43,0x30,0x30,0x32,0x30,0x00, /* 00000158 "NTC0020." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02, /* 00000160 "........" */ + 0x09,0x5C,0x5F,0x53,0x42,0x2E,0x44,0x45, /* 00000168 ".\_SB.DE" */ + 0x56,0x31,0xF0,0xA5,0x00,0x40,0x49,0x4E, /* 00000170 "V1...@IN" */ + 0x54,0x43,0x30,0x30,0x32,0x30,0x00,0x00, /* 00000178 "TC0020.." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x09, /* 00000180 "........" */ + 0x5C,0x5F,0x53,0x42,0x2E,0x44,0x45,0x56, /* 00000188 "\_SB.DEV" */ + 0x32,0xF0,0xA5,0x00,0x40,0x49,0x4E,0x54, /* 00000190 "2...@INT" */ + 0x43,0x30,0x30,0x32,0x30,0x00,0x00,0x00, /* 00000198 "C0020..." */ + 0x00,0x00,0x00,0x00,0x00,0x02,0x09,0x5C, /* 000001A0 ".......\" */ + 0x5F,0x53,0x42,0x2E,0x44,0x45,0x56,0x33, /* 000001A8 "_SB.DEV3" */ + 0x20,0x0D,0x20,0x00,0x22,0x11,0x00,0x00, /* 000001B0 " . ."..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B8 "........" */ + 0xCD,0xAB,0x78,0x56,0x34,0x12,0x00,0x00, /* 000001C0 "..xV4..." */ + 0xDC,0xFE,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001C8 "........" */ + 0x21,0x0D,0x20,0x00,0x22,0x11,0x00,0x00, /* 000001D0 "!. ."..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D8 "........" */ + 0xCD,0xAB,0x78,0x56,0x34,0x12,0x00,0x00, /* 000001E0 "..xV4..." */ + 0xDC,0xFE,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001E8 "........" */ + 0x22,0x0D,0x20,0x00,0x22,0x11,0x00,0x00, /* 000001F0 "". ."..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F8 "........" */ + 0xCD,0xAB,0x78,0x56,0x34,0x12,0x00,0x00, /* 00000200 "..xV4..." */ + 0xDC,0xFE,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000208 "........" */ }; const unsigned char TemplateLpit[] = @@ -1205,6 +1257,97 @@ 0x00,0x00 /* 00000070 ".." */ }; +const unsigned char TemplatePrmt[] = +{ + 0x50,0x52,0x4D,0x54,0xB8,0x02,0x00,0x00, /* 00000000 "PRMT...." */ + 0x00,0x13,0x4F,0x45,0x4D,0x43,0x41,0x20, /* 00000008 "..OEMCA " */ + 0x4F,0x45,0x4D,0x43,0x41,0x20,0x20,0x20, /* 00000010 "OEMCA " */ + 0x02,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x17,0x07,0x20,0x20,0xA5,0x61,0x6B,0xB6, /* 00000020 ".. .ak." */ + 0x01,0xA1,0x46,0xED,0xA6,0xA3,0xCA,0xC1, /* 00000028 "..F....." */ + 0xC4,0xD1,0x30,0x1E,0x3C,0x00,0x00,0x00, /* 00000030 "..0.<..." */ + 0x04,0x00,0x00,0x00,0x00,0x00,0xAA,0x00, /* 00000038 "........" */ + 0xC2,0xB3,0x52,0x16,0xA1,0xA7,0xAC,0x46, /* 00000040 "..R....F" */ + 0xAF,0x93,0xDD,0x6D,0xEE,0x44,0x66,0x69, /* 00000048 "...m.Dfi" */ + 0x01,0x00,0x00,0x00,0x03,0x00,0x26,0x00, /* 00000050 "......&." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ + 0x00,0x00,0x00,0x00,0x2C,0x00,0x5F,0xAD, /* 00000060 "....,._." */ + 0xF2,0xD5,0x47,0xA3,0x3E,0x4D,0x87,0xBC, /* 00000068 "..G.>M.." */ + 0xC2,0xCE,0x63,0x02,0x9C,0xC8,0x90,0xC2, /* 00000070 "..c....." */ + 0x5E,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "^......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */ + 0x2C,0x00,0xC3,0xAD,0xE7,0xA9,0xD0,0x8C, /* 00000090 ",......." */ + 0x9A,0x42,0x89,0x15,0x10,0x94,0x6E,0xBD, /* 00000098 ".B....n." */ + 0xE3,0x18,0xC0,0xC2,0x5E,0x8A,0x00,0x00, /* 000000A0 "....^..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ + 0x00,0x00,0x00,0x00,0x2C,0x00,0x14,0xC2, /* 000000B8 "....,..." */ + 0x88,0xB6,0x81,0x40,0xEB,0x4E,0x8D,0x26, /* 000000C0 "...@.N.&" */ + 0x1E,0xB5,0xA3,0xBC,0xF1,0x1A,0xF0,0xC2, /* 000000C8 "........" */ + 0x5E,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D0 "^......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */ + 0x52,0x00,0xA6,0x58,0x2A,0xDC,0x27,0x59, /* 000000E8 "R..X*.'Y" */ + 0x76,0x47,0xB9,0x95,0xD1,0x18,0xA2,0x73, /* 000000F0 "vG.....s" */ + 0x35,0xA2,0x01,0x00,0x00,0x00,0x01,0x00, /* 000000F8 "5......." */ + 0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000100 "&......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00, /* 00000108 "......,." */ + 0x13,0x2D,0x4F,0x2E,0x40,0x62,0xD0,0x4E, /* 00000110 ".-O.@b.N" */ + 0xA4,0x01,0xC7,0x23,0xFB,0xDC,0x34,0xE8, /* 00000118 "...#..4." */ + 0x90,0x32,0x5E,0x8A,0x00,0x00,0x00,0x00, /* 00000120 ".2^....." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000128 "........" */ + 0xF8,0x7F,0x71,0x8A,0x00,0x00,0x00,0x00, /* 00000130 "..q....." */ + 0x00,0x00,0x2E,0x01,0xD7,0x3E,0xF9,0x0E, /* 00000138 ".....>.." */ + 0xAE,0x14,0x5B,0x42,0x92,0x8F,0xB8,0x5A, /* 00000140 "..[B...Z" */ + 0x62,0x13,0xB5,0x7E,0x01,0x00,0x00,0x00, /* 00000148 "b..~...." */ + 0x06,0x00,0x26,0x00,0x00,0x00,0xE0,0x3F, /* 00000150 "..&....?" */ + 0x71,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000158 "q......." */ + 0x2C,0x00,0x3C,0xCD,0x20,0x21,0x8B,0x84, /* 00000160 ",.<. !.." */ + 0x8F,0x4D,0xAB,0xBB,0x4B,0x74,0xCE,0x64, /* 00000168 ".M..Kt.d" */ + 0xAC,0x89,0x4C,0xA6,0x5D,0x8A,0x00,0x00, /* 00000170 "..L.]..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000178 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000180 "........" */ + 0x00,0x00,0x00,0x00,0x2C,0x00,0xA7,0x35, /* 00000188 "....,..5" */ + 0x09,0xEA,0x6B,0x50,0x59,0x41,0xBB,0xBB, /* 00000190 "..kPYA.." */ + 0x48,0xDE,0xEE,0xCB,0x6F,0x58,0x34,0xA7, /* 00000198 "H...oX4." */ + 0x5D,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001A0 "]......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001A8 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B0 "........" */ + 0x2C,0x00,0xA9,0xBD,0xD1,0x1B,0x9A,0x90, /* 000001B8 ",......." */ + 0x14,0x46,0x96,0x99,0x25,0xEC,0x0C,0x27, /* 000001C0 ".F..%..'" */ + 0x83,0xF7,0x94,0xA7,0x5D,0x8A,0x00,0x00, /* 000001C8 "....]..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D0 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D8 "........" */ + 0x00,0x00,0x00,0x00,0x2C,0x00,0xE7,0xB4, /* 000001E0 "....,..." */ + 0x28,0x5D,0x67,0x38,0xEE,0x4A,0xAA,0x09, /* 000001E8 "(]g8.J.." */ + 0x51,0xFC,0x28,0x2C,0x3B,0x22,0x9C,0xA6, /* 000001F0 "Q.(,;".." */ + 0x5D,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F8 "]......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000200 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000208 "........" */ + 0x2C,0x00,0x02,0xB7,0x64,0x4B,0x2B,0x4D, /* 00000210 ",...dK+M" */ + 0xFE,0x4D,0xAC,0x5A,0x0B,0x41,0x10,0xA2, /* 00000218 ".M.Z.A.." */ + 0xCA,0x47,0x48,0xA7,0x5D,0x8A,0x00,0x00, /* 00000220 ".GH.]..." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000228 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000230 "........" */ + 0x00,0x00,0x00,0x00,0x2C,0x00,0xDE,0xFD, /* 00000238 "....,..." */ + 0x0E,0x8A,0xD0,0x78,0xF0,0x45,0xAE,0xA0, /* 00000240 "...x.E.." */ + 0xC2,0x82,0x45,0xC7,0xE1,0xDB,0x98,0xA7, /* 00000248 "..E....." */ + 0x5D,0x8A,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000250 "]......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000258 "........" */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000260 "........" */ + 0x52,0x00,0x2B,0xF4,0x6C,0x5A,0xB4,0x8B, /* 00000268 "R.+.lZ.." */ + 0x2C,0x47,0xA2,0x33,0x5C,0x4D,0xC4,0x03, /* 00000270 ",G.3\M.." */ + 0x3D,0xC7,0x01,0x00,0x00,0x00,0x01,0x00, /* 00000278 "=......." */ + 0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000280 "&......." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x2C,0x00, /* 00000288 "......,." */ + 0x81,0x60,0x46,0xE1,0x62,0x75,0x0F,0x43, /* 00000290 ".`F.bu.C" */ + 0x89,0x6B,0xB0,0xE5,0x23,0xDC,0x33,0x5A, /* 00000298 ".k..#.3Z" */ + 0x90,0x12,0x5D,0x8A,0x00,0x00,0x00,0x00, /* 000002A0 "..]....." */ + 0xE0,0x5F,0x71,0x8A,0x00,0x00,0x00,0x00, /* 000002A8 "._q....." */ + 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 000002B0 "........" */ +}; + const unsigned char TemplateRasf[] = { 0x52,0x41,0x53,0x46,0x30,0x00,0x00,0x00, /* 00000000 "RASF0..." */ @@ -1215,6 +1358,20 @@ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000028 "........" */ }; +const unsigned char TemplateRgrt[] = +{ + 0x52,0x47,0x52,0x54,0x50,0x00,0x00,0x00, /* 00000000 "RGRTP..." */ + 0x01,0x33,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".3INTEL " */ + 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x31,0x03,0x21,0x20,0x01,0x00,0x01,0x00, /* 00000020 "1.! ...." */ + 0xAA,0x01,0x02,0x03,0x04,0x05,0x06,0x07, /* 00000028 "........" */ + 0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, /* 00000030 "........" */ + 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17, /* 00000038 "........" */ + 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, /* 00000040 "........" */ + 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27 /* 00000048 " !"#$%&'" */ +}; + const unsigned char TemplateRsdp[] = { 0x52,0x53,0x44,0x20,0x50,0x54,0x52,0x20, /* 00000000 "RSD PTR " */ @@ -1475,6 +1632,19 @@ 0x31,0x2E,0x50,0x54,0x31,0x00 /* 00000078 "1.PT1." */ }; +const unsigned char TemplateSvkl[] = +{ + 0x53,0x56,0x4B,0x4C,0x48,0x00,0x00,0x00, /* 00000000 "SVKLH..." */ + 0x04,0xDB,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ + 0x54,0x65,0x6D,0x70,0x6C,0x61,0x74,0x65, /* 00000010 "Template" */ + 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ + 0x31,0x03,0x21,0x20,0x02,0x00,0x00,0x00, /* 00000020 "1.! ...." */ + 0x00,0x00,0x00,0x00,0x21,0x43,0xAA,0xAA, /* 00000028 "....!C.." */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01, /* 00000030 "....gE#." */ + 0x00,0x00,0x00,0x00,0x21,0x43,0xBB,0xBB, /* 00000038 "....!C.." */ + 0xEF,0xCD,0xAB,0x89,0x67,0x45,0x23,0x01 /* 00000040 "....gE#." */ +}; + const unsigned char TemplateTcpa[] = { 0x54,0x43,0x50,0x41,0x64,0x00,0x00,0x00, /* 00000000 "TCPAd..." */ diff -Nru fwts-21.05.00/src/acpica/source/compiler/dtutils.c fwts-21.06.00/src/acpica/source/compiler/dtutils.c --- fwts-21.05.00/src/acpica/source/compiler/dtutils.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/compiler/dtutils.c 2021-06-21 05:43:14.000000000 +0000 @@ -426,6 +426,7 @@ case ACPI_DMT_NAME6: case ACPI_DMT_NAME8: case ACPI_DMT_STRING: + case ACPI_DMT_IVRS_UNTERMINATED_STRING: Type = DT_FIELD_TYPE_STRING; break; @@ -576,11 +577,13 @@ case ACPI_DMT_ACCWIDTH: case ACPI_DMT_CEDT: case ACPI_DMT_IVRS: + case ACPI_DMT_IVRS_DE: case ACPI_DMT_GTDT: case ACPI_DMT_MADT: case ACPI_DMT_PCCT: case ACPI_DMT_PMTT: case ACPI_DMT_PPTT: + case ACPI_DMT_RGRT: case ACPI_DMT_SDEV: case ACPI_DMT_SRAT: case ACPI_DMT_ASF: @@ -653,6 +656,22 @@ } else { /* At this point, this is a fatal error */ + + sprintf (AslGbl_MsgBuffer, "Expected \"%s\"", Info->Name); + DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, AslGbl_MsgBuffer); + return (0); + } + break; + + case ACPI_DMT_IVRS_UNTERMINATED_STRING: + + Value = DtGetFieldValue (Field); + if (Value) + { + ByteLength = strlen (Value); + } + else + { /* At this point, this is a fatal error */ sprintf (AslGbl_MsgBuffer, "Expected \"%s\"", Info->Name); DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, AslGbl_MsgBuffer); diff -Nru fwts-21.05.00/src/acpica/source/components/executer/exfield.c fwts-21.06.00/src/acpica/source/components/executer/exfield.c --- fwts-21.05.00/src/acpica/source/components/executer/exfield.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/components/executer/exfield.c 2021-06-21 05:43:14.000000000 +0000 @@ -295,7 +295,8 @@ else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) && (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS || ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS || - ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI)) + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI || + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT)) { /* SMBus, GSBus, IPMI serial */ @@ -467,7 +468,8 @@ else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) && (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS || ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS || - ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI)) + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI || + ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_PLATFORM_RT)) { /* SMBus, GSBus, IPMI serial */ diff -Nru fwts-21.05.00/src/acpica/source/components/executer/exserial.c fwts-21.06.00/src/acpica/source/components/executer/exserial.c --- fwts-21.05.00/src/acpica/source/components/executer/exserial.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/components/executer/exserial.c 2021-06-21 05:43:14.000000000 +0000 @@ -353,6 +353,12 @@ Function = ACPI_READ | (AccessorType << 16); break; + case ACPI_ADR_SPACE_PLATFORM_RT: + + BufferLength = ACPI_PRM_INPUT_BUFFER_SIZE; + Function = ACPI_READ; + break; + default: return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); } @@ -472,6 +478,12 @@ Function = ACPI_WRITE | (AccessorType << 16); break; + case ACPI_ADR_SPACE_PLATFORM_RT: + + BufferLength = ACPI_PRM_INPUT_BUFFER_SIZE; + Function = ACPI_WRITE; + break; + default: return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); } diff -Nru fwts-21.05.00/src/acpica/source/components/namespace/nsrepair2.c fwts-21.06.00/src/acpica/source/components/namespace/nsrepair2.c --- fwts-21.05.00/src/acpica/source/components/namespace/nsrepair2.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/components/namespace/nsrepair2.c 2021-06-21 05:43:14.000000000 +0000 @@ -565,6 +565,13 @@ (*ElementPtr)->Common.ReferenceCount = OriginalRefCount; + + /* + * The OriginalElement holds a reference from the package object + * that represents _HID. Since a new element was created by _HID, + * remove the reference from the _CID package. + */ + AcpiUtRemoveReference (OriginalElement); } ElementPtr++; diff -Nru fwts-21.05.00/src/acpica/source/components/utilities/utdelete.c fwts-21.06.00/src/acpica/source/components/utilities/utdelete.c --- fwts-21.05.00/src/acpica/source/components/utilities/utdelete.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/components/utilities/utdelete.c 2021-06-21 05:43:14.000000000 +0000 @@ -443,6 +443,14 @@ } break; + case ACPI_TYPE_LOCAL_ADDRESS_HANDLER: + + ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, + "***** Address handler %p\n", Object)); + + AcpiOsDeleteMutex (Object->AddressSpace.ContextMutex); + break; + default: break; diff -Nru fwts-21.05.00/src/acpica/source/components/utilities/utuuid.c fwts-21.06.00/src/acpica/source/components/utilities/utuuid.c --- fwts-21.05.00/src/acpica/source/components/utilities/utuuid.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/components/utilities/utuuid.c 2021-06-21 05:43:14.000000000 +0000 @@ -208,4 +208,52 @@ InString[AcpiGbl_MapToUuidOffset[i] + 1]); } } + + +/******************************************************************************* + * + * FUNCTION: AcpiUtConvertUuidToString + * + * PARAMETERS: UuidBuffer - 16-byte UUID buffer + * OutString - 36-byte formatted UUID string + * + * RETURN: Status + * + * DESCRIPTION: Convert 16-byte UUID buffer to 36-byte formatted UUID string + * OutString must be 37 bytes to include null terminator. + * + ******************************************************************************/ + +ACPI_STATUS +AcpiUtConvertUuidToString ( + char *UuidBuffer, + char *OutString) +{ + UINT32 i; + + + if (!UuidBuffer || !OutString) + { + return (AE_BAD_PARAMETER); + } + + for (i = 0; i < UUID_BUFFER_LENGTH; i++) + { + OutString[AcpiGbl_MapToUuidOffset[i]] = + AcpiUtHexToAsciiChar (UuidBuffer[i], 4); + + OutString[AcpiGbl_MapToUuidOffset[i] + 1] = + AcpiUtHexToAsciiChar (UuidBuffer[i], 0); + } + + /* Insert required hyphens (dashes) */ + + OutString[UUID_HYPHEN1_OFFSET] = + OutString[UUID_HYPHEN2_OFFSET] = + OutString[UUID_HYPHEN3_OFFSET] = + OutString[UUID_HYPHEN4_OFFSET] = '-'; + + OutString[UUID_STRING_LENGTH] = 0; /* Null terminate */ + return (AE_OK); +} #endif diff -Nru fwts-21.05.00/src/acpica/source/include/acbuffer.h fwts-21.06.00/src/acpica/source/include/acbuffer.h --- fwts-21.05.00/src/acpica/source/include/acbuffer.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/include/acbuffer.h 2021-06-21 05:43:14.000000000 +0000 @@ -359,5 +359,14 @@ #define ACPI_PLD_GET_HORIZ_OFFSET(dword) ACPI_GET_BITS (dword, 16, ACPI_16BIT_MASK) #define ACPI_PLD_SET_HORIZ_OFFSET(dword,value) ACPI_SET_BITS (dword, 16, ACPI_16BIT_MASK, value) /* Offset 128+16=144, Len 16 */ +/* Panel position defined in _PLD section of ACPI Specification 6.3 */ + +#define ACPI_PLD_PANEL_TOP 0 +#define ACPI_PLD_PANEL_BOTTOM 1 +#define ACPI_PLD_PANEL_LEFT 2 +#define ACPI_PLD_PANEL_RIGHT 3 +#define ACPI_PLD_PANEL_FRONT 4 +#define ACPI_PLD_PANEL_BACK 5 +#define ACPI_PLD_PANEL_UNKNOWN 6 #endif /* ACBUFFER_H */ diff -Nru fwts-21.05.00/src/acpica/source/include/acconfig.h fwts-21.06.00/src/acpica/source/include/acconfig.h --- fwts-21.05.00/src/acpica/source/include/acconfig.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/include/acconfig.h 2021-06-21 05:43:14.000000000 +0000 @@ -333,6 +333,7 @@ #define ACPI_MAX_GSBUS_DATA_SIZE 255 #define ACPI_MAX_GSBUS_BUFFER_SIZE ACPI_SERIAL_HEADER_SIZE + ACPI_MAX_GSBUS_DATA_SIZE +#define ACPI_PRM_INPUT_BUFFER_SIZE 26 /* _SxD and _SxW control methods */ diff -Nru fwts-21.05.00/src/acpica/source/include/acdisasm.h fwts-21.06.00/src/acpica/source/include/acdisasm.h --- fwts-21.05.00/src/acpica/source/include/acdisasm.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/include/acdisasm.h 2021-06-21 05:43:14.000000000 +0000 @@ -266,6 +266,8 @@ ACPI_DMT_HMAT, ACPI_DMT_IORTMEM, ACPI_DMT_IVRS, + ACPI_DMT_IVRS_DE, + ACPI_DMT_IVRS_UNTERMINATED_STRING, ACPI_DMT_LPIT, ACPI_DMT_MADT, ACPI_DMT_NFIT, @@ -274,6 +276,7 @@ ACPI_DMT_PMTT, ACPI_DMT_PMTT_VENDOR, ACPI_DMT_PPTT, + ACPI_DMT_RGRT, ACPI_DMT_SDEI, ACPI_DMT_SDEV, ACPI_DMT_SLIC, @@ -365,6 +368,7 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoBdat[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBert[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBgrt[]; @@ -465,16 +469,20 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortMap[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIortPad[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs0[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs01[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHware1[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHware23[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsMemory[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs4[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8b[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsCidString[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsCidInteger[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHid1[]; -extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsUidString[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsUidInteger[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHidString[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHidInteger[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt1[]; @@ -546,7 +554,12 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt1a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPptt2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPpttHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHdr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtModule[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoPrmtHandler[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRasf[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoRgrt0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt[]; @@ -580,6 +593,8 @@ extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat5[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoStao[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoStaoStr[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl[]; +extern ACPI_DMTABLE_INFO AcpiDmTableInfoSvkl0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaClient[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpaServer[]; @@ -774,6 +789,14 @@ AcpiDmDumpPptt ( ACPI_TABLE_HEADER *Table); +void +AcpiDmDumpPrmt ( + ACPI_TABLE_HEADER *Table); + +void +AcpiDmDumpRgrt ( + ACPI_TABLE_HEADER *Table); + UINT32 AcpiDmDumpRsdp ( ACPI_TABLE_HEADER *Table); @@ -807,6 +830,10 @@ ACPI_TABLE_HEADER *Table); void +AcpiDmDumpSvkl ( + ACPI_TABLE_HEADER *Table); + +void AcpiDmDumpTcpa ( ACPI_TABLE_HEADER *Table); diff -Nru fwts-21.05.00/src/acpica/source/include/acpixf.h fwts-21.06.00/src/acpica/source/include/acpixf.h --- fwts-21.05.00/src/acpica/source/include/acpixf.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/include/acpixf.h 2021-06-21 05:43:14.000000000 +0000 @@ -154,7 +154,7 @@ /* Current ACPICA subsystem version in YYYYMMDD format */ -#define ACPI_CA_VERSION 0x20210331 +#define ACPI_CA_VERSION 0x20210604 #include "acconfig.h" #include "actypes.h" diff -Nru fwts-21.05.00/src/acpica/source/include/actbinfo.h fwts-21.06.00/src/acpica/source/include/actbinfo.h --- fwts-21.05.00/src/acpica/source/include/actbinfo.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/include/actbinfo.h 2021-06-21 05:43:14.000000000 +0000 @@ -156,6 +156,7 @@ #define ACPI_GAS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f) #define ACPI_HDR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HEADER,f) #define ACPI_RSDP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RSDP,f) +#define ACPI_BDAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BDAT,f) #define ACPI_BERT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BERT,f) #define ACPI_BGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BGRT,f) #define ACPI_BOOT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BOOT,f) @@ -183,6 +184,7 @@ #define ACPI_PDTT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PDTT,f) #define ACPI_PMTT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PMTT,f) #define ACPI_RASF_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RASF,f) +#define ACPI_RGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RGRT,f) #define ACPI_S3PT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_S3PT,f) #define ACPI_SBST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SBST,f) #define ACPI_SDEI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SDEI,f) @@ -192,6 +194,7 @@ #define ACPI_SPMI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SPMI,f) #define ACPI_SRAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SRAT,f) #define ACPI_STAO_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_STAO,f) +#define ACPI_SVKL_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SVKL,f) #define ACPI_TCPA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_HDR,f) #define ACPI_TPM2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM2,f) #define ACPI_TPM23_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM23,f) @@ -334,6 +337,9 @@ #define ACPI_PPTT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_CACHE,f) #define ACPI_PPTT1A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_CACHE_V1,f) #define ACPI_PPTT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PPTT_ID,f) +#define ACPI_PRMTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PRMT_HEADER,f) +#define ACPI_PRMT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PRMT_MODULE_INFO,f) +#define ACPI_PRMT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PRMT_HANDLER_INFO,f) #define ACPI_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f) #define ACPI_S3PT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_RESUME,f) #define ACPI_S3PT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_SUSPEND,f) @@ -353,6 +359,7 @@ #define ACPI_SRAT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GICC_AFFINITY,f) #define ACPI_SRAT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GIC_ITS_AFFINITY,f) #define ACPI_SRAT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_GENERIC_AFFINITY,f) +#define ACPI_SVKL0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SVKL_KEY,f) #define ACPI_TCPA_CLIENT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_CLIENT,f) #define ACPI_TCPA_SERVER_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA_SERVER,f) #define ACPI_TPM2A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TPM2_TRAILER,f) @@ -398,6 +405,8 @@ #define ACPI_IORT6_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_RMR,f,o) #define ACPI_IORTA_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_MEMORY_ACCESS,f,o) #define ACPI_IORTM_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IORT_ID_MAPPING,f,o) +#define ACPI_IVRS_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IVRS_HEADER,f,o) +#define ACPI_IVRSDE_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_IVRS_DE_HEADER,f,o) #define ACPI_LPITH_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_LPIT_HEADER,f,o) #define ACPI_MADT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_MADT,f,o) #define ACPI_MADT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_APIC,f,o) diff -Nru fwts-21.05.00/src/acpica/source/include/actbl1.h fwts-21.06.00/src/acpica/source/include/actbl1.h --- fwts-21.05.00/src/acpica/source/include/actbl1.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/include/actbl1.h 2021-06-21 05:43:14.000000000 +0000 @@ -523,9 +523,19 @@ enum AcpiCedtType { ACPI_CEDT_TYPE_CHBS = 0, - ACPI_CEDT_TYPE_RESERVED = 1 + ACPI_CEDT_TYPE_CFMWS = 1, + ACPI_CEDT_TYPE_RESERVED = 2, }; +/* Values for version field above */ + +#define ACPI_CEDT_CHBS_VERSION_CXL11 (0) +#define ACPI_CEDT_CHBS_VERSION_CXL20 (1) + +/* Values for length field above */ + +#define ACPI_CEDT_CHBS_LENGTH_CXL11 (0x2000) +#define ACPI_CEDT_CHBS_LENGTH_CXL20 (0x10000) /* * CEDT subtables @@ -545,6 +555,37 @@ } ACPI_CEDT_CHBS; +/* 1: CXL Fixed Memory Window Structure */ + +typedef struct acpi_cedt_cfmws +{ + ACPI_CEDT_HEADER Header; + UINT32 Reserved1; + UINT64 BaseHpa; + UINT64 WindowSize; + UINT8 InterleaveWays; + UINT8 InterleaveArithmetic; + UINT16 Reserved2; + UINT32 Granularity; + UINT16 Restrictions; + UINT16 QtgId; + UINT32 InterleaveTargets[]; + +} ACPI_CEDT_CFMWS; + +/* Values for Interleave Arithmetic field above */ + +#define ACPI_CEDT_CFMWS_ARITHMETIC_MODULO (0) + +/* Values for Restrictions field above */ + +#define ACPI_CEDT_CFMWS_RESTRICT_TYPE2 (1) +#define ACPI_CEDT_CFMWS_RESTRICT_TYPE3 (1<<1) +#define ACPI_CEDT_CFMWS_RESTRICT_VOLATILE (1<<2) +#define ACPI_CEDT_CFMWS_RESTRICT_PMEM (1<<3) +#define ACPI_CEDT_CFMWS_RESTRICT_FIXED (1<<4) + + /******************************************************************************* * * CPEP - Corrected Platform Error Polling table (ACPI 4.0) diff -Nru fwts-21.05.00/src/acpica/source/include/actbl2.h fwts-21.06.00/src/acpica/source/include/actbl2.h --- fwts-21.05.00/src/acpica/source/include/actbl2.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/include/actbl2.h 2021-06-21 05:43:14.000000000 +0000 @@ -168,6 +168,7 @@ * file. Useful because they make it more difficult to inadvertently type in * the wrong signature. */ +#define ACPI_SIG_BDAT "BDAT" /* BIOS Data ACPI Table */ #define ACPI_SIG_IORT "IORT" /* IO Remapping Table */ #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ #define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */ @@ -183,11 +184,14 @@ #define ACPI_SIG_PHAT "PHAT" /* Platform Health Assessment Table */ #define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */ #define ACPI_SIG_PPTT "PPTT" /* Processor Properties Topology Table */ +#define ACPI_SIG_PRMT "PRMT" /* Platform Runtime Mechanism Table */ #define ACPI_SIG_RASF "RASF" /* RAS Feature table */ +#define ACPI_SIG_RGRT "RGRT" /* Regulatory Graphics Resource Table */ #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ #define ACPI_SIG_SDEI "SDEI" /* Software Delegated Exception Interface Table */ #define ACPI_SIG_SDEV "SDEV" /* Secure Devices table */ #define ACPI_SIG_NHLT "NHLT" /* Non-HDAudio Link Table */ +#define ACPI_SIG_SVKL "SVKL" /* Storage Volume Key Location Table */ /* @@ -211,6 +215,23 @@ /******************************************************************************* * + * BDAT - BIOS Data ACPI Table + * + * Conforms to "BIOS Data ACPI Table", Interface Specification v4.0 Draft 5 + * Nov 2020 + * + ******************************************************************************/ + +typedef struct acpi_table_bdat +{ + ACPI_TABLE_HEADER Header; + ACPI_GENERIC_ADDRESS Gas; + +} ACPI_TABLE_BDAT; + + +/******************************************************************************* + * * IORT - IO Remapping Table * * Conforms to "IO Remapping Table System Software on ARM Platforms", @@ -649,6 +670,11 @@ } ACPI_IVRS_DEVICE_HID; +/* Values for UidType above */ + +#define ACPI_IVRS_UID_NOT_PRESENT 0 +#define ACPI_IVRS_UID_IS_INTEGER 1 +#define ACPI_IVRS_UID_IS_STRING 2 /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ @@ -1034,6 +1060,22 @@ } ACPI_MADT_MULTIPROC_WAKEUP; +#define ACPI_MULTIPROC_WAKEUP_MB_OS_SIZE 2032 +#define ACPI_MULTIPROC_WAKEUP_MB_FIRMWARE_SIZE 2048 + +typedef struct acpi_madt_multiproc_wakeup_mailbox +{ + UINT16 Command; + UINT16 Reserved; /* reserved - must be zero */ + UINT32 ApicId; + UINT64 WakeupVector; + UINT8 ReservedOs[ACPI_MULTIPROC_WAKEUP_MB_OS_SIZE]; /* reserved for OS use */ + UINT8 ReservedFirmware[ACPI_MULTIPROC_WAKEUP_MB_FIRMWARE_SIZE]; /* reserved for firmware use */ + +} ACPI_MADT_MULTIPROC_WAKEUP_MAILBOX; + +#define ACPI_MP_WAKE_COMMAND_WAKEUP 1 + /* * Common flags fields for MADT subtables @@ -2102,6 +2144,52 @@ /******************************************************************************* * + * PRMT - Platform Runtime Mechanism Table + * Version 1 + * + ******************************************************************************/ + +typedef struct acpi_table_prmt +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + +} ACPI_TABLE_PRMT; + +typedef struct acpi_table_prmt_header +{ + UINT8 PlatformGuid[16]; + UINT32 ModuleInfoOffset; + UINT32 ModuleInfoCount; + +} ACPI_TABLE_PRMT_HEADER; + +typedef struct acpi_prmt_module_info +{ + UINT16 Revision; + UINT16 Length; + UINT8 ModuleGuid[16]; + UINT16 MajorRev; + UINT16 MinorRev; + UINT16 HandlerInfoCount; + UINT32 HandlerInfoOffset; + UINT64 MmioListPointer; + +} ACPI_PRMT_MODULE_INFO; + +typedef struct acpi_prmt_handler_info +{ + UINT16 Revision; + UINT16 Length; + UINT8 HandlerGuid[16]; + UINT64 HandlerAddress; + UINT64 StaticDataBufferAddress; + UINT64 AcpiParamBufferAddress; + +} ACPI_PRMT_HANDLER_INFO; + + +/******************************************************************************* + * * RASF - RAS Feature Table (ACPI 5.0) * Version 1 * @@ -2211,6 +2299,36 @@ /******************************************************************************* * + * RGRT - Regulatory Graphics Resource Table + * Version 1 + * + * Conforms to "ACPI RGRT" available at: + * https://microsoft.github.io/mu/dyn/mu_plus/MsCorePkg/AcpiRGRT/feature_acpi_rgrt/ + * + ******************************************************************************/ + +typedef struct acpi_table_rgrt +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT16 Version; + UINT8 ImageType; + UINT8 Reserved; + UINT8 Image[0]; + +} ACPI_TABLE_RGRT; + +/* ImageType values */ + +enum AcpiRgrtImageType +{ + ACPI_RGRT_TYPE_RESERVED0 = 0, + ACPI_RGRT_IMAGE_TYPE_PNG = 1, + ACPI_RGRT_TYPE_RESERVED = 2 /* 2 and greater are reserved */ +}; + + +/******************************************************************************* + * * SBST - Smart Battery Specification Table * Version 1 * @@ -2371,6 +2489,44 @@ } ACPI_SDEV_PCIE_PATH; +/******************************************************************************* + * + * SVKL - Storage Volume Key Location Table (ACPI 6.4) + * From: "Guest-Host-Communication Interface (GHCI) for Intel + * Trust Domain Extensions (Intel TDX)". + * Version 1 + * + ******************************************************************************/ + +typedef struct acpi_table_svkl +{ + ACPI_TABLE_HEADER Header; /* Common ACPI table header */ + UINT32 Count; + +} ACPI_TABLE_SVKL; + +typedef struct acpi_svkl_key +{ + UINT16 Type; + UINT16 Format; + UINT32 Size; + UINT64 Address; + +} ACPI_SVKL_KEY; + +enum acpi_svkl_type +{ + ACPI_SVKL_TYPE_MAIN_STORAGE = 0, + ACPI_SVKL_TYPE_RESERVED = 1 /* 1 and greater are reserved */ +}; + +enum acpi_svkl_format +{ + ACPI_SVKL_FORMAT_RAW_BINARY = 0, + ACPI_SVKL_FORMAT_RESERVED = 1 /* 1 and greater are reserved */ +}; + + /* Reset to default packing */ #pragma pack() diff -Nru fwts-21.05.00/src/acpica/source/include/acutils.h fwts-21.06.00/src/acpica/source/include/acutils.h --- fwts-21.05.00/src/acpica/source/include/acutils.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/include/acutils.h 2021-06-21 05:43:14.000000000 +0000 @@ -1268,6 +1268,11 @@ AcpiUtConvertStringToUuid ( char *InString, UINT8 *UuidBuffer); + +ACPI_STATUS +AcpiUtConvertUuidToString ( + char *UuidBuffer, + char *OutString); #endif #endif /* _ACUTILS_H */ diff -Nru fwts-21.05.00/src/acpica/source/tools/acpiexec/aeinstall.c fwts-21.06.00/src/acpica/source/tools/acpiexec/aeinstall.c --- fwts-21.05.00/src/acpica/source/tools/acpiexec/aeinstall.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/tools/acpiexec/aeinstall.c 2021-06-21 05:43:14.000000000 +0000 @@ -216,6 +216,7 @@ ACPI_ADR_SPACE_GPIO, ACPI_ADR_SPACE_GSBUS, ACPI_ADR_SPACE_PLATFORM_COMM, + ACPI_ADR_SPACE_PLATFORM_RT, ACPI_ADR_SPACE_FIXED_HARDWARE, ACPI_ADR_SPACE_USER_DEFINED1, ACPI_ADR_SPACE_USER_DEFINED2 diff -Nru fwts-21.05.00/src/acpica/source/tools/acpiexec/aeregion.c fwts-21.06.00/src/acpica/source/tools/acpiexec/aeregion.c --- fwts-21.05.00/src/acpica/source/tools/acpiexec/aeregion.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/acpica/source/tools/acpiexec/aeregion.c 2021-06-21 05:43:14.000000000 +0000 @@ -205,6 +205,7 @@ UINT32 Value1; UINT32 Value2; ACPI_RESOURCE *Resource; + char Uuid[ACPI_PRM_INPUT_BUFFER_SIZE + 1]; ACPI_FUNCTION_NAME (AeRegionHandler); @@ -446,6 +447,7 @@ * default values. Note: ASLTS will depend on these values. */ case ACPI_ADR_SPACE_PLATFORM_COMM: /* ACPI 6.3 */ + if (AcpiGbl_DisplayRegionAccess) { AcpiOsPrintf ("AcpiExec: PCC Write : Addr %.4X Width %X\n", @@ -457,6 +459,21 @@ } return (AE_OK); + case ACPI_ADR_SPACE_PLATFORM_RT: + + AcpiOsPrintf ("Acpiexec: PRM %s invoked\n", + (Function & ACPI_IO_MASK) ? "Write" : "Read "); + + if ((Function & ACPI_IO_MASK) == ACPI_WRITE) + { + AcpiUtConvertUuidToString((char *) Buffer + 10, Uuid); + AcpiOsPrintf ("Mode: %u GUID: %s\n", Buffer[0], Uuid); + } + + /* Unpack the input buffer and print the contents for debug */ + + break; + default: break; } diff -Nru fwts-21.05.00/src/dmi/dmicheck/dmicheck.c fwts-21.06.00/src/dmi/dmicheck/dmicheck.c --- fwts-21.05.00/src/dmi/dmicheck/dmicheck.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/dmi/dmicheck/dmicheck.c 2021-06-21 05:43:14.000000000 +0000 @@ -787,7 +787,7 @@ } if (!smbios30_found) { - if (!(fw->flags & FWTS_FLAG_TEST_SBBR)) { + if (!(fw->flags & FWTS_FLAG_SBBR)) { if (smbios_found) return FWTS_OK; } @@ -2105,6 +2105,7 @@ { "System Boot Information", 32, 1, 0, 0 }, { "IPMI Device Information", 38, 0, "Required for platforms with IPMI BMC Interface.", 0 }, { "Onboard Devices Extended Information", 41, 0, RECOMMENDED_STRUCTURE_DEFAULT_MSG, 0 }, + { "Redfish Host Interface", 42, 0, "Required for platforms supporting Redfish Host Interface.", 0 }, { 0, 0, 0, 0, 0 } }; @@ -2172,7 +2173,7 @@ if ((next_entry - table) <= table_max_length) { dmicheck_entry(fw, addr, &hdr, smbios_version); - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) sbbr_test_entry_check(&hdr); } else { @@ -2197,7 +2198,7 @@ uint16_t version = 0; uint8_t *table; - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) return FWTS_SKIP; if (!smbios_found) { @@ -2271,7 +2272,7 @@ { uint32_t i; - if (!(fw->flags & FWTS_FLAG_TEST_SBBR)) + if (!(fw->flags & FWTS_FLAG_SBBR)) return FWTS_SKIP; if (!smbios30_found) { @@ -2309,6 +2310,6 @@ .minor_tests = dmicheck_tests }; -FWTS_REGISTER("dmicheck", &dmicheck_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_TEST_SBBR) +FWTS_REGISTER("dmicheck", &dmicheck_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/lib/include/fwts_acpi.h fwts-21.06.00/src/lib/include/fwts_acpi.h --- fwts-21.05.00/src/lib/include/fwts_acpi.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/lib/include/fwts_acpi.h 2021-06-21 05:43:14.000000000 +0000 @@ -22,8 +22,6 @@ #include "fwts.h" -#if defined(FWTS_HAS_ACPI) - #define FWTS_ACPI_TABLES_PATH "/sys/firmware/acpi/tables" #define FWTS_FACP_UNSPECIFIED (0x00) @@ -2154,7 +2152,7 @@ typedef struct { uint8_t watchdog_action; uint8_t instruction_flags; - uint8_t reserved[2]; + uint16_t reserved; fwts_acpi_gas register_region; uint32_t value; uint32_t mask; @@ -2216,5 +2214,3 @@ } __attribute__ ((packed)) fwts_acpi_table_aspt; #endif - -#endif diff -Nru fwts-21.05.00/src/lib/include/fwts_acpi_tables.h fwts-21.06.00/src/lib/include/fwts_acpi_tables.h --- fwts-21.05.00/src/lib/include/fwts_acpi_tables.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/lib/include/fwts_acpi_tables.h 2021-06-21 05:43:14.000000000 +0000 @@ -22,8 +22,6 @@ #include "fwts.h" -#if defined(FWTS_HAS_ACPI) - #define ACPI_MAX_TABLES (128) #define fwts_acpi_revision_check(table, actual, must_be, passed) \ @@ -63,26 +61,36 @@ int fwts_acpi_load_tables(fwts_framework *fw); int fwts_acpi_free_tables(void); -int fwts_acpi_find_table(fwts_framework *fw, const char *name, const uint32_t which, fwts_acpi_table_info **info); -int fwts_acpi_find_table_by_addr(fwts_framework *fw, const uint64_t addr, fwts_acpi_table_info **info); +int fwts_acpi_find_table(fwts_framework *fw, const char *name, const uint32_t which, + fwts_acpi_table_info **info); +int fwts_acpi_find_table_by_addr(fwts_framework *fw, const uint64_t addr, + fwts_acpi_table_info **info); int fwts_acpi_get_table(fwts_framework *fw, const uint32_t index, fwts_acpi_table_info **info); bool fwts_acpi_obj_find(fwts_framework *fw, const char *obj_name); fwts_bool fwts_acpi_is_reduced_hardware(fwts_framework *fw); -void fwts_acpi_reserved_zero_(fwts_framework *fw, const char *table, const char *field, uint64_t value, uint8_t size, bool *passed); -void fwts_acpi_reserved_zero_array(fwts_framework *fw, const char *table, const char *field, uint8_t* data, uint8_t length, bool *passed); -void fwts_acpi_reserved_bits_(fwts_framework *fw, const char *table, const char *field, uint64_t value, uint8_t size, uint8_t min, uint8_t max, bool *passed); -void fwts_acpi_reserved_type(fwts_framework *fw, const char *table, uint8_t value, uint8_t min, uint8_t reserved, bool *passed); -bool fwts_acpi_table_length(fwts_framework *fw, const char *table, uint32_t length, uint32_t size); -bool fwts_acpi_structure_length(fwts_framework *fw, const char *table, uint8_t type, uint32_t actual_length, uint32_t struct_length); -bool fwts_acpi_structure_length_zero(fwts_framework *fw, const char *table, uint16_t length, uint32_t offset); -bool fwts_acpi_structure_range(fwts_framework *fw, const char *table, uint32_t table_length, uint32_t offset); -void fwts_acpi_fixed_value(fwts_framework *fw, fwts_log_level level, const char *table, const char *field, uint8_t actual, uint8_t must_be, bool *passed); -void fwts_acpi_space_id(fwts_framework *fw, const char *table, const char *field, bool *passed, uint8_t actual, uint8_t num_type, ...); +void fwts_acpi_reserved_zero_(fwts_framework *fw, const char *table, const char *field, + const uint64_t value, const uint8_t size, bool *passed); +void fwts_acpi_reserved_zero_array(fwts_framework *fw, const char *table, const char *field, + const uint8_t* data, const uint8_t length, bool *passed); +void fwts_acpi_reserved_bits_(fwts_framework *fw, const char *table, const char *field, + const uint64_t value, const uint8_t size, const uint8_t min, const uint8_t max, bool *passed); +void fwts_acpi_reserved_type(fwts_framework *fw, const char *table, const uint8_t value, + const uint8_t min, const uint8_t reserved, bool *passed); +bool fwts_acpi_table_length(fwts_framework *fw, const char *table, const uint32_t length, + const uint32_t size); +bool fwts_acpi_structure_length(fwts_framework *fw, const char *table, const uint8_t type, + const uint32_t actual_length, const uint32_t struct_length); +bool fwts_acpi_structure_length_zero(fwts_framework *fw, const char *table, + const uint16_t length, const uint32_t offset); +bool fwts_acpi_structure_range(fwts_framework *fw, const char *table, const uint32_t table_length, + const uint32_t offset); +void fwts_acpi_fixed_value(fwts_framework *fw, const fwts_log_level level, const char *table, + const char *field, const uint8_t actual, const uint8_t must_be, bool *passed); +void fwts_acpi_space_id(fwts_framework *fw, const char *table, const char *field, bool *passed, + const uint8_t actual, const uint8_t num_type, ...); uint32_t fwts_get_acpi_version(fwts_framework *fw); #endif - -#endif diff -Nru fwts-21.05.00/src/lib/include/fwts_framework.h fwts-21.06.00/src/lib/include/fwts_framework.h --- fwts-21.05.00/src/lib/include/fwts_framework.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/lib/include/fwts_framework.h 2021-06-21 05:43:14.000000000 +0000 @@ -54,25 +54,18 @@ FWTS_FLAG_ROOT_PRIV = 0x00002000, FWTS_FLAG_UNSAFE = 0x00004000, FWTS_FLAG_FIRMWARE_VENDOR = 0x00008000, - FWTS_FLAG_TEST_BIOS = 0x00010000, - FWTS_FLAG_TEST_UEFI = 0x00020000, - FWTS_FLAG_TEST_ACPI = 0x00040000, + FWTS_FLAG_UEFI = 0x00020000, + FWTS_FLAG_ACPI = 0x00040000, FWTS_FLAG_UTILS = 0x00080000, FWTS_FLAG_QUIET = 0x00100000, FWTS_FLAG_SHOW_TESTS_FULL = 0x00200000, FWTS_FLAG_SHOW_TESTS_CATEGORIES = 0x00400000, - FWTS_FLAG_TEST_COMPLIANCE_ACPI = 0x00800000, - FWTS_FLAG_TEST_SBBR = 0x01000000, - FWTS_FLAG_TEST_EBBR = 0x02000000, - FWTS_FLAG_TEST_XBBR = FWTS_FLAG_TEST_SBBR | FWTS_FLAG_TEST_EBBR + FWTS_FLAG_COMPLIANCE_ACPI = 0x00800000, + FWTS_FLAG_SBBR = 0x01000000, + FWTS_FLAG_EBBR = 0x02000000, + FWTS_FLAG_XBBR = FWTS_FLAG_SBBR | FWTS_FLAG_EBBR } fwts_framework_flags; -#define FWTS_FLAG_TEST_MASK \ - (FWTS_FLAG_TEST_BIOS | \ - FWTS_FLAG_TEST_UEFI | \ - FWTS_FLAG_TEST_ACPI | \ - FWTS_FLAG_TEST_SBBR) - /* * Test results */ diff -Nru fwts-21.05.00/src/lib/include/fwts_iasl.h fwts-21.06.00/src/lib/include/fwts_iasl.h --- fwts-21.05.00/src/lib/include/fwts_iasl.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/lib/include/fwts_iasl.h 2021-06-21 05:43:14.000000000 +0000 @@ -23,8 +23,6 @@ #include "fwts.h" #include -#if defined(FWTS_HAS_ACPI) - int fwts_iasl_init(fwts_framework *fw); void fwts_iasl_deinit(void); @@ -45,5 +43,3 @@ const char *fwts_iasl_exception_level(uint8_t level); #endif - -#endif diff -Nru fwts-21.05.00/src/lib/include/fwts_version.h fwts-21.06.00/src/lib/include/fwts_version.h --- fwts-21.05.00/src/lib/include/fwts_version.h 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/lib/include/fwts_version.h 2021-06-21 05:43:14.000000000 +0000 @@ -16,5 +16,5 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ -#define FWTS_VERSION "V21.05.00" -#define FWTS_DATE "2021-05-20 08:40:13" +#define FWTS_VERSION "V21.06.00" +#define FWTS_DATE "2021-06-21 05:43:14" diff -Nru fwts-21.05.00/src/lib/src/fwts_acpi.c fwts-21.06.00/src/lib/src/fwts_acpi.c --- fwts-21.05.00/src/lib/src/fwts_acpi.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/lib/src/fwts_acpi.c 2021-06-21 05:43:14.000000000 +0000 @@ -28,8 +28,6 @@ #include "fwts.h" -#if defined(FWTS_HAS_ACPI) - const char *fwts_acpi_fadt_preferred_pm_profile(const int profile) { static const char *pm_profiles[] = { @@ -70,5 +68,3 @@ return true; } - -#endif diff -Nru fwts-21.05.00/src/lib/src/fwts_acpi_object_eval.c fwts-21.06.00/src/lib/src/fwts_acpi_object_eval.c --- fwts-21.05.00/src/lib/src/fwts_acpi_object_eval.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/lib/src/fwts_acpi_object_eval.c 2021-06-21 05:43:14.000000000 +0000 @@ -18,8 +18,6 @@ */ #include "fwts.h" -#if defined(FWTS_HAS_ACPI) - #include #include #include @@ -1562,7 +1560,7 @@ if (len == 0) { if ((mif == 1) && (maf == 1)) { snprintf(tmp, sizeof(tmp), "Method%s%sMifMafBothOne", objname, tag); - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) fwts_warning(fw, tmp, "%s %s _MIF and _MAF flags are both " "set to one which is invalid when " @@ -1591,7 +1589,7 @@ *passed = false; } else if (min % tmpgran != 0) { snprintf(tmp, sizeof(tmp), "Method%s%sMinNotMultipleOfGran", objname, tag); - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) fwts_warning(fw, tmp, "%s %s _MIN address is not a multiple " "of the granularity when _MIF is 1.", @@ -1618,7 +1616,7 @@ *passed = false; } else if (max % tmpgran != 0) { snprintf(tmp, sizeof(tmp), "Method%s%sMaxNotMultipleOfGran", objname, tag); - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) fwts_warning(fw, tmp, "%s %s _MAX address is not a multiple " "of the granularity when _MAF is 1.", @@ -1637,7 +1635,7 @@ if ((mif == 0) && (maf == 0) && (len % (granularity + 1) != 0)) { snprintf(tmp, sizeof(tmp), "Method%s%sLenNotMultipleOfGran", objname, tag); - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) fwts_warning(fw, tmp, "%s %s length is not a multiple " "of the granularity when _MIF " @@ -1655,7 +1653,7 @@ } if (((mif == 0) && (maf == 1)) || ((mif == 1) && (maf == 0))) { snprintf(tmp, sizeof(tmp), "Method%s%sMifMafInvalid", objname, tag); - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) fwts_warning(fw, tmp, "%s %s _MIF and _MAF flags are either " "0 and 1 or 1 and 0 which is invalid when " @@ -1674,7 +1672,7 @@ if ((mif == 1) && (maf == 1)) { if (granularity != 0) { snprintf(tmp, sizeof(tmp), "Method%s%sGranularityNotZero", objname, tag); - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) fwts_warning(fw, tmp, "%s %s granularity 0x%" PRIx64 " is not zero as expected when " @@ -1692,7 +1690,7 @@ } if (min > max) { snprintf(tmp, sizeof(tmp), "Method%s%sMaxLessThanMin", objname, tag); - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) fwts_warning(fw, tmp, "%s %s minimum address range 0x%" PRIx64 " is greater than the maximum address " @@ -1710,7 +1708,7 @@ } if (max - min + 1 != len) { snprintf(tmp, sizeof(tmp), "Method%s%sLengthInvalid", objname, tag); - if (fw->flags & FWTS_FLAG_TEST_SBBR) + if (fw->flags & FWTS_FLAG_SBBR) fwts_warning(fw, tmp, "%s %s length 0x%" PRIx64 " does not match the difference between " @@ -3135,5 +3133,3 @@ else fwts_method_passed_sane(fw, name, "package"); } - -#endif diff -Nru fwts-21.05.00/src/lib/src/fwts_acpi_tables.c fwts-21.06.00/src/lib/src/fwts_acpi_tables.c --- fwts-21.05.00/src/lib/src/fwts_acpi_tables.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/lib/src/fwts_acpi_tables.c 2021-06-21 05:43:14.000000000 +0000 @@ -37,8 +37,6 @@ #include "fwts_acpi_object_eval.h" -#if defined(FWTS_HAS_ACPI) - #define BIOS_START (0x000e0000) /* Start of BIOS memory */ #define BIOS_END (0x000fffff) /* End of BIOS memory */ #define BIOS_LENGTH (BIOS_END - BIOS_START) /* Length of BIOS memory */ @@ -263,7 +261,7 @@ if (strncmp(tables[i].name, name, 4) == 0) which++; if (tables[i].data == NULL) { - strncpy(tables[i].name, name, 4); + memcpy(tables[i].name, name, 4); tables[i].name[4] = 0; tables[i].data = table; tables[i].addr = addr; @@ -1432,8 +1430,8 @@ fwts_framework *fw, const char *table, const char *field, - uint64_t value, - uint8_t size, + const uint64_t value, + const uint8_t size, bool *passed) { if (value != 0) { @@ -1476,8 +1474,8 @@ fwts_framework *fw, const char *table, const char *field, - uint8_t* data, - uint8_t length, + const uint8_t* data, + const uint8_t length, bool *passed) { uint32_t value = 0; @@ -1507,11 +1505,11 @@ */ void fwts_acpi_fixed_value( fwts_framework *fw, - fwts_log_level level, + const fwts_log_level level, const char *table, const char *field, - uint8_t actual, - uint8_t must_be, + const uint8_t actual, + const uint8_t must_be, bool *passed) { char label[20]; @@ -1535,10 +1533,10 @@ fwts_framework *fw, const char *table, const char *field, - uint64_t value, - uint8_t size, - uint8_t min, - uint8_t max, + const uint64_t value, + const uint8_t size, + const uint8_t min, + const uint8_t max, bool *passed) { uint64_t mask = 0; @@ -1586,9 +1584,9 @@ void fwts_acpi_reserved_type( fwts_framework *fw, const char *table, - uint8_t value, - uint8_t min, - uint8_t reserved, + const uint8_t value, + const uint8_t min, + const uint8_t reserved, bool *passed) { if (value < min || value >= reserved) { @@ -1648,8 +1646,8 @@ const char *table, const char *field, bool *passed, - uint8_t actual, - uint8_t num_type, + const uint8_t actual, + const uint8_t num_type, ...) { bool matched = false; @@ -1705,8 +1703,8 @@ bool fwts_acpi_table_length( fwts_framework *fw, const char *table, - uint32_t length, - uint32_t size) + const uint32_t length, + const uint32_t size) { if (length < size) { char label[30]; @@ -1729,9 +1727,9 @@ bool fwts_acpi_structure_length( fwts_framework *fw, const char *table, - uint8_t type, - uint32_t actual_length, - uint32_t struct_length) + const uint8_t type, + const uint32_t actual_length, + const uint32_t struct_length) { if (actual_length != struct_length) { char label[30]; @@ -1828,5 +1826,3 @@ return acpi_version; } - -#endif diff -Nru fwts-21.05.00/src/lib/src/fwts_framework.c fwts-21.06.00/src/lib/src/fwts_framework.c --- fwts-21.05.00/src/lib/src/fwts_framework.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/lib/src/fwts_framework.c 2021-06-21 05:43:14.000000000 +0000 @@ -55,24 +55,24 @@ FWTS_FLAG_POWER_STATES | \ FWTS_FLAG_UTILS | \ FWTS_FLAG_UNSAFE | \ - FWTS_FLAG_TEST_UEFI | \ - FWTS_FLAG_TEST_ACPI | \ - FWTS_FLAG_TEST_COMPLIANCE_ACPI | \ - FWTS_FLAG_TEST_SBBR | \ - FWTS_FLAG_TEST_EBBR) + FWTS_FLAG_UEFI | \ + FWTS_FLAG_ACPI | \ + FWTS_FLAG_COMPLIANCE_ACPI | \ + FWTS_FLAG_SBBR | \ + FWTS_FLAG_EBBR) static const fwts_categories categories[] = { - { "ACPI", FWTS_FLAG_TEST_ACPI }, + { "ACPI", FWTS_FLAG_ACPI }, { "Batch", FWTS_FLAG_BATCH }, { "Interactive", FWTS_FLAG_INTERACTIVE }, { "Batch Experimental", FWTS_FLAG_BATCH_EXPERIMENTAL }, { "Interactive Experimental", FWTS_FLAG_INTERACTIVE_EXPERIMENTAL }, { "Power States", FWTS_FLAG_POWER_STATES }, - { "SBBR", FWTS_FLAG_TEST_SBBR }, + { "SBBR", FWTS_FLAG_SBBR }, { "Utilities", FWTS_FLAG_UTILS }, { "Unsafe", FWTS_FLAG_UNSAFE }, - { "UEFI", FWTS_FLAG_TEST_UEFI }, - { "ACPI Spec Compliance", FWTS_FLAG_TEST_COMPLIANCE_ACPI }, + { "UEFI", FWTS_FLAG_UEFI }, + { "ACPI Spec Compliance", FWTS_FLAG_COMPLIANCE_ACPI }, { NULL, 0 }, }; @@ -1309,7 +1309,7 @@ return FWTS_ERROR; break; case 38: /* --uefitests */ - fw->flags |= FWTS_FLAG_TEST_UEFI; + fw->flags |= FWTS_FLAG_UEFI; break; case 39: /* --rsdp */ fw->rsdp = (void *)strtoul(optarg, NULL, 0); @@ -1322,10 +1322,10 @@ fw->flags |= FWTS_FLAG_SHOW_TESTS_CATEGORIES; break; case 42: /* --acpitests */ - fw->flags |= FWTS_FLAG_TEST_ACPI; + fw->flags |= FWTS_FLAG_ACPI; break; case 43: /* --acpicompliance */ - fw->flags |= FWTS_FLAG_TEST_COMPLIANCE_ACPI; + fw->flags |= FWTS_FLAG_COMPLIANCE_ACPI; break; case 44: /* --log-level */ if (fwts_framework_ll_parse(fw, optarg) != FWTS_OK) @@ -1337,7 +1337,7 @@ break; case 46: /* --sbbr */ #if defined(FWTS_ARCH_AARCH64) - fw->flags |= FWTS_FLAG_TEST_SBBR; + fw->flags |= FWTS_FLAG_SBBR; break; #else fprintf(stderr, "option not available on this architecture\n"); @@ -1351,7 +1351,7 @@ break; case 49: /* --ebbr */ #if defined(FWTS_ARCH_AARCH64) - fw->flags |= FWTS_FLAG_TEST_EBBR; + fw->flags |= FWTS_FLAG_EBBR; break; #else fprintf(stderr, "option not available on this architecture\n"); diff -Nru fwts-21.05.00/src/lib/src/fwts_iasl.c fwts-21.06.00/src/lib/src/fwts_iasl.c --- fwts-21.05.00/src/lib/src/fwts_iasl.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/lib/src/fwts_iasl.c 2021-06-21 05:43:14.000000000 +0000 @@ -29,8 +29,6 @@ #include "fwts.h" -#if defined(FWTS_HAS_ACPI) - #include "fwts_iasl_interface.h" #include "fwts_acpica.h" @@ -319,5 +317,3 @@ { return fwts_iasl_exception_level__(level); } - -#endif diff -Nru fwts-21.05.00/src/libfwtsacpica/fwts_acpica.c fwts-21.06.00/src/libfwtsacpica/fwts_acpica.c --- fwts-21.05.00/src/libfwtsacpica/fwts_acpica.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/libfwtsacpica/fwts_acpica.c 2021-06-21 05:43:14.000000000 +0000 @@ -35,8 +35,6 @@ #include "fwts.h" -#if defined(FWTS_HAS_ACPI) - /* ACPICA specific headers */ #include "acpi.h" #include "accommon.h" @@ -1331,50 +1329,3 @@ return list; } - -#else - -static void __void_func(const char *funcname) -{ - fprintf(stderr, "fwts ACPICA library: unexpected call to %s()\n", funcname); - exit(EXIT_FAILURE); -} - -#define VOID_FUNC(name) void name(void) { __void_func(#name); } - -/* - * With ACPI disabled, these functions should never - * be called. We should defined this otherwise we will - * get linker errors with some autotools/linker combos - */ -VOID_FUNC(AcpiGbl_IgnoreErrors) -VOID_FUNC(AcpiGbl_RegionFillValue) - -VOID_FUNC(AcpiOsCreateSemaphore) -VOID_FUNC(AcpiOsDeleteSemaphore) -VOID_FUNC(AcpiOsExecute) -VOID_FUNC(AcpiOsGetRootPointer) -VOID_FUNC(AcpiOsPrintf) -VOID_FUNC(AcpiOsReadPciConfiguration) -VOID_FUNC(AcpiOsReadPort) -VOID_FUNC(AcpiOsSignal) -VOID_FUNC(AcpiOsSignalSemaphore) -VOID_FUNC(AcpiOsSleep) -VOID_FUNC(AcpiOsVprintf) -VOID_FUNC(AcpiOsWaitSemaphore) - -VOID_FUNC(AeTableOverride) - -VOID_FUNC(MpSaveGpioInfo) -VOID_FUNC(MpSaveSerialInfo) - -/* - * We need this otherwise gcc 4.5 ends up with a linker failure - * when building with ACPI disabled and I have no idea why. - */ -unsigned char AcpiGbl_AbortLoopOnTimeout = FALSE; -unsigned char AcpiGbl_VerboseHandlers = FALSE; -void *AcpiGbl_InitEntries = NULL; -uint32_t AcpiGbl_InitFileLineCount = 0; - -#endif diff -Nru fwts-21.05.00/src/libfwtsacpica/Makefile.am fwts-21.06.00/src/libfwtsacpica/Makefile.am --- fwts-21.05.00/src/libfwtsacpica/Makefile.am 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/libfwtsacpica/Makefile.am 2021-06-21 05:43:14.000000000 +0000 @@ -24,8 +24,8 @@ AM_CPPFLAGS = \ -D_LINUX -DNDEBUG -D_CONSOLE -DACPI_EXEC_APP \ -I$(top_srcdir)/src/lib/include \ - -I$(srcdir)/../acpica/source/include \ - -I$(srcdir)/../acpica/source/tools/acpiexec \ + -I$(top_srcdir)/src/acpica/source/include \ + -I$(top_srcdir)/src/acpica/source/tools/acpiexec \ -Wall -fno-strict-aliasing \ -Wno-address-of-packed-member @@ -33,7 +33,7 @@ # We rename some of the functions so we can override them in fwts. This # is a hack, I feel dirty now. # -osunixxf_munged.c: ../acpica/source/os_specific/service_layers/osunixxf.c +osunixxf_munged.c: ../../src/acpica/source/os_specific/service_layers/osunixxf.c cat $^ | \ sed 's/^AcpiOsPrintf/__AcpiOsPrintf/' | \ sed 's/^AcpiOsReadPort/__AcpiOsReadPort/' | \ @@ -52,7 +52,7 @@ # because we really don't want to wait until the sun turns into # a lump of coal before we complete a blocked operation # -dscontrol_munged.c: $(srcdir)/../acpica/source/components/dispatcher/dscontrol.c +dscontrol_munged.c: ../../src/acpica/source/components/dispatcher/dscontrol.c cat $^ | \ sed 's/ACPI_MAX_LOOP_ITERATIONS/0x0080/' \ > $@ @@ -64,13 +64,13 @@ # CLEANFILES = osunixxf_munged.c \ dscontrol_munged.c \ - $(srcdir)/../acpica/source/compiler/aslcompiler.output \ - $(srcdir)/../acpica/source/compiler/dtparser.output \ - $(srcdir)/../acpica/source/compiler/dtparser.y.h \ - $(srcdir)/../acpica/source/compiler/prparser.output \ - $(srcdir)/../acpica/source/compiler/prparser.y.h \ - $(srcdir)/../acpica/source/compiler/prparserlex.c \ - $(srcdir)/../acpica/source/compiler/prparserparse.c + ../src/acpica/source/compiler/aslcompiler.output \ + ../src/acpica/source/compiler/dtparser.output \ + ../src/acpica/source/compiler/dtparser.y.h \ + ../src/acpica/source/compiler/prparser.output \ + ../src/acpica/source/compiler/prparser.y.h \ + ../src/acpica/source/compiler/prparserlex.c \ + ../src/acpica/source/compiler/prparserparse.c pkglib_LTLIBRARIES = libfwtsacpica.la @@ -84,204 +84,204 @@ fwts_acpica.c \ osunixxf_munged.c \ dscontrol_munged.c \ - $(srcdir)/../acpica/source/components/debugger/dbcmds.c \ - $(srcdir)/../acpica/source/components/debugger/dbdisply.c \ - $(srcdir)/../acpica/source/components/debugger/dbexec.c \ - $(srcdir)/../acpica/source/components/debugger/dbfileio.c \ - $(srcdir)/../acpica/source/components/debugger/dbhistry.c \ - $(srcdir)/../acpica/source/components/debugger/dbinput.c \ - $(srcdir)/../acpica/source/components/debugger/dbstats.c \ - $(srcdir)/../acpica/source/components/debugger/dbobject.c \ - $(srcdir)/../acpica/source/components/debugger/dbutils.c \ - $(srcdir)/../acpica/source/components/debugger/dbxface.c \ - $(srcdir)/../acpica/source/components/debugger/dbmethod.c \ - $(srcdir)/../acpica/source/components/debugger/dbnames.c \ - $(srcdir)/../acpica/source/components/debugger/dbconvert.c \ - $(srcdir)/../acpica/source/components/debugger/dbtest.c \ - $(srcdir)/../acpica/source/components/disassembler/dmbuffer.c \ - $(srcdir)/../acpica/source/components/disassembler/dmcstyle.c \ - $(srcdir)/../acpica/source/components/disassembler/dmnames.c \ - $(srcdir)/../acpica/source/components/disassembler/dmopcode.c \ - $(srcdir)/../acpica/source/components/disassembler/dmresrc.c \ - $(srcdir)/../acpica/source/components/disassembler/dmresrcl.c \ - $(srcdir)/../acpica/source/components/disassembler/dmresrcs.c \ - $(srcdir)/../acpica/source/components/disassembler/dmutils.c \ - $(srcdir)/../acpica/source/components/disassembler/dmwalk.c \ - $(srcdir)/../acpica/source/components/disassembler/dmresrcl2.c \ - $(srcdir)/../acpica/source/components/disassembler/dmdeferred.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsdebug.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsfield.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsinit.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsmethod.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsmthdat.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsobject.c \ - $(srcdir)/../acpica/source/components/dispatcher/dspkginit.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsutils.c \ - $(srcdir)/../acpica/source/components/dispatcher/dswexec.c \ - $(srcdir)/../acpica/source/components/dispatcher/dswload.c \ - $(srcdir)/../acpica/source/components/dispatcher/dswscope.c \ - $(srcdir)/../acpica/source/components/dispatcher/dswstate.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsargs.c \ - $(srcdir)/../acpica/source/components/dispatcher/dswload2.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsopcode.c \ - $(srcdir)/../acpica/source/components/events/evevent.c \ - $(srcdir)/../acpica/source/components/events/evgpe.c \ - $(srcdir)/../acpica/source/components/events/evgpeblk.c \ - $(srcdir)/../acpica/source/components/events/evgpeinit.c \ - $(srcdir)/../acpica/source/components/events/evgpeutil.c \ - $(srcdir)/../acpica/source/components/events/evxfgpe.c \ - $(srcdir)/../acpica/source/components/events/evmisc.c \ - $(srcdir)/../acpica/source/components/events/evregion.c \ - $(srcdir)/../acpica/source/components/events/evrgnini.c \ - $(srcdir)/../acpica/source/components/events/evsci.c \ - $(srcdir)/../acpica/source/components/events/evxface.c \ - $(srcdir)/../acpica/source/components/events/evxfevnt.c \ - $(srcdir)/../acpica/source/components/events/evxfregn.c \ - $(srcdir)/../acpica/source/components/events/evglock.c \ - $(srcdir)/../acpica/source/components/events/evhandler.c \ - $(srcdir)/../acpica/source/components/executer/exconcat.c \ - $(srcdir)/../acpica/source/components/executer/exfield.c \ - $(srcdir)/../acpica/source/components/executer/exfldio.c \ - $(srcdir)/../acpica/source/components/executer/exmisc.c \ - $(srcdir)/../acpica/source/components/executer/exmutex.c \ - $(srcdir)/../acpica/source/components/executer/exnames.c \ - $(srcdir)/../acpica/source/components/executer/exoparg1.c \ - $(srcdir)/../acpica/source/components/executer/exoparg2.c \ - $(srcdir)/../acpica/source/components/executer/exoparg3.c \ - $(srcdir)/../acpica/source/components/executer/exoparg6.c \ - $(srcdir)/../acpica/source/components/executer/exprep.c \ - $(srcdir)/../acpica/source/components/executer/exregion.c \ - $(srcdir)/../acpica/source/components/executer/exresnte.c \ - $(srcdir)/../acpica/source/components/executer/exresolv.c \ - $(srcdir)/../acpica/source/components/executer/exresop.c \ - $(srcdir)/../acpica/source/components/executer/exserial.c \ - $(srcdir)/../acpica/source/components/executer/exstore.c \ - $(srcdir)/../acpica/source/components/executer/exstoren.c \ - $(srcdir)/../acpica/source/components/executer/exstorob.c \ - $(srcdir)/../acpica/source/components/executer/exsystem.c \ - $(srcdir)/../acpica/source/components/executer/extrace.c \ - $(srcdir)/../acpica/source/components/executer/exutils.c \ - $(srcdir)/../acpica/source/components/executer/exconvrt.c \ - $(srcdir)/../acpica/source/components/executer/excreate.c \ - $(srcdir)/../acpica/source/components/executer/exdump.c \ - $(srcdir)/../acpica/source/components/executer/exdebug.c \ - $(srcdir)/../acpica/source/components/executer/exconfig.c \ - $(srcdir)/../acpica/source/components/hardware/hwacpi.c \ - $(srcdir)/../acpica/source/components/hardware/hwgpe.c \ - $(srcdir)/../acpica/source/components/hardware/hwpci.c \ - $(srcdir)/../acpica/source/components/hardware/hwregs.c \ - $(srcdir)/../acpica/source/components/hardware/hwsleep.c \ - $(srcdir)/../acpica/source/components/hardware/hwvalid.c \ - $(srcdir)/../acpica/source/components/hardware/hwxface.c \ - $(srcdir)/../acpica/source/components/hardware/hwxfsleep.c \ - $(srcdir)/../acpica/source/components/hardware/hwesleep.c \ - $(srcdir)/../acpica/source/components/namespace/nsaccess.c \ - $(srcdir)/../acpica/source/components/namespace/nsalloc.c \ - $(srcdir)/../acpica/source/components/namespace/nsdump.c \ - $(srcdir)/../acpica/source/components/namespace/nsdumpdv.c \ - $(srcdir)/../acpica/source/components/namespace/nseval.c \ - $(srcdir)/../acpica/source/components/namespace/nsinit.c \ - $(srcdir)/../acpica/source/components/namespace/nsload.c \ - $(srcdir)/../acpica/source/components/namespace/nsnames.c \ - $(srcdir)/../acpica/source/components/namespace/nsobject.c \ - $(srcdir)/../acpica/source/components/namespace/nsparse.c \ - $(srcdir)/../acpica/source/components/namespace/nspredef.c \ - $(srcdir)/../acpica/source/components/namespace/nsrepair.c \ - $(srcdir)/../acpica/source/components/namespace/nsrepair2.c \ - $(srcdir)/../acpica/source/components/namespace/nssearch.c \ - $(srcdir)/../acpica/source/components/namespace/nsutils.c \ - $(srcdir)/../acpica/source/components/namespace/nswalk.c \ - $(srcdir)/../acpica/source/components/namespace/nsxfeval.c \ - $(srcdir)/../acpica/source/components/namespace/nsxfname.c \ - $(srcdir)/../acpica/source/components/namespace/nsxfobj.c \ - $(srcdir)/../acpica/source/components/namespace/nsconvert.c \ - $(srcdir)/../acpica/source/components/namespace/nsprepkg.c \ - $(srcdir)/../acpica/source/components/namespace/nsarguments.c \ - $(srcdir)/../acpica/source/components/parser/psargs.c \ - $(srcdir)/../acpica/source/components/parser/psloop.c \ - $(srcdir)/../acpica/source/components/parser/psopcode.c \ - $(srcdir)/../acpica/source/components/parser/psparse.c \ - $(srcdir)/../acpica/source/components/parser/psscope.c \ - $(srcdir)/../acpica/source/components/parser/pstree.c \ - $(srcdir)/../acpica/source/components/parser/psutils.c \ - $(srcdir)/../acpica/source/components/parser/pswalk.c \ - $(srcdir)/../acpica/source/components/parser/psxface.c \ - $(srcdir)/../acpica/source/components/parser/psopinfo.c \ - $(srcdir)/../acpica/source/components/parser/psobject.c \ - $(srcdir)/../acpica/source/components/resources/rsaddr.c \ - $(srcdir)/../acpica/source/components/resources/rscalc.c \ - $(srcdir)/../acpica/source/components/resources/rscreate.c \ - $(srcdir)/../acpica/source/components/resources/rsdump.c \ - $(srcdir)/../acpica/source/components/resources/rsio.c \ - $(srcdir)/../acpica/source/components/resources/rsinfo.c \ - $(srcdir)/../acpica/source/components/resources/rsirq.c \ - $(srcdir)/../acpica/source/components/resources/rslist.c \ - $(srcdir)/../acpica/source/components/resources/rsmemory.c \ - $(srcdir)/../acpica/source/components/resources/rsmisc.c \ - $(srcdir)/../acpica/source/components/resources/rsutils.c \ - $(srcdir)/../acpica/source/components/resources/rsxface.c \ - $(srcdir)/../acpica/source/components/resources/rsserial.c \ - $(srcdir)/../acpica/source/components/resources/rsdumpinfo.c \ - $(srcdir)/../acpica/source/components/tables/tbdata.c \ - $(srcdir)/../acpica/source/components/tables/tbfadt.c \ - $(srcdir)/../acpica/source/components/tables/tbfind.c \ - $(srcdir)/../acpica/source/components/tables/tbinstal.c \ - $(srcdir)/../acpica/source/components/tables/tbutils.c \ - $(srcdir)/../acpica/source/components/tables/tbxface.c \ - $(srcdir)/../acpica/source/components/tables/tbxfroot.c \ - $(srcdir)/../acpica/source/components/tables/tbxfload.c \ - $(srcdir)/../acpica/source/components/tables/tbprint.c \ - $(srcdir)/../acpica/source/components/utilities/utaddress.c \ - $(srcdir)/../acpica/source/components/utilities/utalloc.c \ - $(srcdir)/../acpica/source/components/utilities/utascii.c \ - $(srcdir)/../acpica/source/components/utilities/utcache.c \ - $(srcdir)/../acpica/source/components/utilities/utcopy.c \ - $(srcdir)/../acpica/source/components/utilities/utdebug.c \ - $(srcdir)/../acpica/source/components/utilities/utdelete.c \ - $(srcdir)/../acpica/source/components/utilities/uteval.c \ - $(srcdir)/../acpica/source/components/utilities/utglobal.c \ - $(srcdir)/../acpica/source/components/utilities/uthex.c \ - $(srcdir)/../acpica/source/components/utilities/utids.c \ - $(srcdir)/../acpica/source/components/utilities/utinit.c \ - $(srcdir)/../acpica/source/components/utilities/utlock.c \ - $(srcdir)/../acpica/source/components/utilities/utmath.c \ - $(srcdir)/../acpica/source/components/utilities/utmisc.c \ - $(srcdir)/../acpica/source/components/utilities/utmutex.c \ - $(srcdir)/../acpica/source/components/utilities/utnonansi.c \ - $(srcdir)/../acpica/source/components/utilities/utobject.c \ - $(srcdir)/../acpica/source/components/utilities/utresdecode.c \ - $(srcdir)/../acpica/source/components/utilities/utresrc.c \ - $(srcdir)/../acpica/source/components/utilities/utstate.c \ - $(srcdir)/../acpica/source/components/utilities/utstrtoul64.c \ - $(srcdir)/../acpica/source/components/utilities/uttrack.c \ - $(srcdir)/../acpica/source/components/utilities/utosi.c \ - $(srcdir)/../acpica/source/components/utilities/utxferror.c \ - $(srcdir)/../acpica/source/components/utilities/utxface.c \ - $(srcdir)/../acpica/source/components/utilities/utdecode.c \ - $(srcdir)/../acpica/source/components/utilities/utexcep.c \ - $(srcdir)/../acpica/source/components/utilities/utpredef.c \ - $(srcdir)/../acpica/source/components/utilities/utstring.c \ - $(srcdir)/../acpica/source/components/utilities/utstrsuppt.c \ - $(srcdir)/../acpica/source/components/utilities/utownerid.c \ - $(srcdir)/../acpica/source/components/utilities/utxfinit.c \ - $(srcdir)/../acpica/source/components/utilities/uterror.c \ - $(srcdir)/../acpica/source/components/utilities/utbuffer.c \ - $(srcdir)/../acpica/source/components/utilities/utuuid.c \ - $(srcdir)/../acpica/source/common/acfileio.c \ - $(srcdir)/../acpica/source/common/acgetline.c \ - $(srcdir)/../acpica/source/common/ahids.c \ - $(srcdir)/../acpica/source/common/cmfsize.c \ - $(srcdir)/../acpica/source/common/ahtable.c \ - $(srcdir)/../acpica/source/common/ahuuids.c \ - $(srcdir)/../acpica/source/tools/acpiexec/aeinitfile.c \ - $(srcdir)/../acpica/source/tools/acpiexec/aehandlers.c \ - $(srcdir)/../acpica/source/tools/acpiexec/aeexception.c \ - $(srcdir)/../acpica/source/tools/acpiexec/aeregion.c \ - $(srcdir)/../acpica/source/tools/acpiexec/aeinstall.c \ - $(srcdir)/../acpica/source/os_specific/service_layers/osgendbg.c + ../../src/acpica/source/components/debugger/dbcmds.c \ + ../../src/acpica/source/components/debugger/dbdisply.c \ + ../../src/acpica/source/components/debugger/dbexec.c \ + ../../src/acpica/source/components/debugger/dbfileio.c \ + ../../src/acpica/source/components/debugger/dbhistry.c \ + ../../src/acpica/source/components/debugger/dbinput.c \ + ../../src/acpica/source/components/debugger/dbstats.c \ + ../../src/acpica/source/components/debugger/dbobject.c \ + ../../src/acpica/source/components/debugger/dbutils.c \ + ../../src/acpica/source/components/debugger/dbxface.c \ + ../../src/acpica/source/components/debugger/dbmethod.c \ + ../../src/acpica/source/components/debugger/dbnames.c \ + ../../src/acpica/source/components/debugger/dbconvert.c \ + ../../src/acpica/source/components/debugger/dbtest.c \ + ../../src/acpica/source/components/disassembler/dmbuffer.c \ + ../../src/acpica/source/components/disassembler/dmcstyle.c \ + ../../src/acpica/source/components/disassembler/dmnames.c \ + ../../src/acpica/source/components/disassembler/dmopcode.c \ + ../../src/acpica/source/components/disassembler/dmresrc.c \ + ../../src/acpica/source/components/disassembler/dmresrcl.c \ + ../../src/acpica/source/components/disassembler/dmresrcs.c \ + ../../src/acpica/source/components/disassembler/dmutils.c \ + ../../src/acpica/source/components/disassembler/dmwalk.c \ + ../../src/acpica/source/components/disassembler/dmresrcl2.c \ + ../../src/acpica/source/components/disassembler/dmdeferred.c \ + ../../src/acpica/source/components/dispatcher/dsdebug.c \ + ../../src/acpica/source/components/dispatcher/dsfield.c \ + ../../src/acpica/source/components/dispatcher/dsinit.c \ + ../../src/acpica/source/components/dispatcher/dsmethod.c \ + ../../src/acpica/source/components/dispatcher/dsmthdat.c \ + ../../src/acpica/source/components/dispatcher/dsobject.c \ + ../../src/acpica/source/components/dispatcher/dspkginit.c \ + ../../src/acpica/source/components/dispatcher/dsutils.c \ + ../../src/acpica/source/components/dispatcher/dswexec.c \ + ../../src/acpica/source/components/dispatcher/dswload.c \ + ../../src/acpica/source/components/dispatcher/dswscope.c \ + ../../src/acpica/source/components/dispatcher/dswstate.c \ + ../../src/acpica/source/components/dispatcher/dsargs.c \ + ../../src/acpica/source/components/dispatcher/dswload2.c \ + ../../src/acpica/source/components/dispatcher/dsopcode.c \ + ../../src/acpica/source/components/events/evevent.c \ + ../../src/acpica/source/components/events/evgpe.c \ + ../../src/acpica/source/components/events/evgpeblk.c \ + ../../src/acpica/source/components/events/evgpeinit.c \ + ../../src/acpica/source/components/events/evgpeutil.c \ + ../../src/acpica/source/components/events/evxfgpe.c \ + ../../src/acpica/source/components/events/evmisc.c \ + ../../src/acpica/source/components/events/evregion.c \ + ../../src/acpica/source/components/events/evrgnini.c \ + ../../src/acpica/source/components/events/evsci.c \ + ../../src/acpica/source/components/events/evxface.c \ + ../../src/acpica/source/components/events/evxfevnt.c \ + ../../src/acpica/source/components/events/evxfregn.c \ + ../../src/acpica/source/components/events/evglock.c \ + ../../src/acpica/source/components/events/evhandler.c \ + ../../src/acpica/source/components/executer/exconcat.c \ + ../../src/acpica/source/components/executer/exfield.c \ + ../../src/acpica/source/components/executer/exfldio.c \ + ../../src/acpica/source/components/executer/exmisc.c \ + ../../src/acpica/source/components/executer/exmutex.c \ + ../../src/acpica/source/components/executer/exnames.c \ + ../../src/acpica/source/components/executer/exoparg1.c \ + ../../src/acpica/source/components/executer/exoparg2.c \ + ../../src/acpica/source/components/executer/exoparg3.c \ + ../../src/acpica/source/components/executer/exoparg6.c \ + ../../src/acpica/source/components/executer/exprep.c \ + ../../src/acpica/source/components/executer/exregion.c \ + ../../src/acpica/source/components/executer/exresnte.c \ + ../../src/acpica/source/components/executer/exresolv.c \ + ../../src/acpica/source/components/executer/exresop.c \ + ../../src/acpica/source/components/executer/exserial.c \ + ../../src/acpica/source/components/executer/exstore.c \ + ../../src/acpica/source/components/executer/exstoren.c \ + ../../src/acpica/source/components/executer/exstorob.c \ + ../../src/acpica/source/components/executer/exsystem.c \ + ../../src/acpica/source/components/executer/extrace.c \ + ../../src/acpica/source/components/executer/exutils.c \ + ../../src/acpica/source/components/executer/exconvrt.c \ + ../../src/acpica/source/components/executer/excreate.c \ + ../../src/acpica/source/components/executer/exdump.c \ + ../../src/acpica/source/components/executer/exdebug.c \ + ../../src/acpica/source/components/executer/exconfig.c \ + ../../src/acpica/source/components/hardware/hwacpi.c \ + ../../src/acpica/source/components/hardware/hwgpe.c \ + ../../src/acpica/source/components/hardware/hwpci.c \ + ../../src/acpica/source/components/hardware/hwregs.c \ + ../../src/acpica/source/components/hardware/hwsleep.c \ + ../../src/acpica/source/components/hardware/hwvalid.c \ + ../../src/acpica/source/components/hardware/hwxface.c \ + ../../src/acpica/source/components/hardware/hwxfsleep.c \ + ../../src/acpica/source/components/hardware/hwesleep.c \ + ../../src/acpica/source/components/namespace/nsaccess.c \ + ../../src/acpica/source/components/namespace/nsalloc.c \ + ../../src/acpica/source/components/namespace/nsdump.c \ + ../../src/acpica/source/components/namespace/nsdumpdv.c \ + ../../src/acpica/source/components/namespace/nseval.c \ + ../../src/acpica/source/components/namespace/nsinit.c \ + ../../src/acpica/source/components/namespace/nsload.c \ + ../../src/acpica/source/components/namespace/nsnames.c \ + ../../src/acpica/source/components/namespace/nsobject.c \ + ../../src/acpica/source/components/namespace/nsparse.c \ + ../../src/acpica/source/components/namespace/nspredef.c \ + ../../src/acpica/source/components/namespace/nsrepair.c \ + ../../src/acpica/source/components/namespace/nsrepair2.c \ + ../../src/acpica/source/components/namespace/nssearch.c \ + ../../src/acpica/source/components/namespace/nsutils.c \ + ../../src/acpica/source/components/namespace/nswalk.c \ + ../../src/acpica/source/components/namespace/nsxfeval.c \ + ../../src/acpica/source/components/namespace/nsxfname.c \ + ../../src/acpica/source/components/namespace/nsxfobj.c \ + ../../src/acpica/source/components/namespace/nsconvert.c \ + ../../src/acpica/source/components/namespace/nsprepkg.c \ + ../../src/acpica/source/components/namespace/nsarguments.c \ + ../../src/acpica/source/components/parser/psargs.c \ + ../../src/acpica/source/components/parser/psloop.c \ + ../../src/acpica/source/components/parser/psopcode.c \ + ../../src/acpica/source/components/parser/psparse.c \ + ../../src/acpica/source/components/parser/psscope.c \ + ../../src/acpica/source/components/parser/pstree.c \ + ../../src/acpica/source/components/parser/psutils.c \ + ../../src/acpica/source/components/parser/pswalk.c \ + ../../src/acpica/source/components/parser/psxface.c \ + ../../src/acpica/source/components/parser/psopinfo.c \ + ../../src/acpica/source/components/parser/psobject.c \ + ../../src/acpica/source/components/resources/rsaddr.c \ + ../../src/acpica/source/components/resources/rscalc.c \ + ../../src/acpica/source/components/resources/rscreate.c \ + ../../src/acpica/source/components/resources/rsdump.c \ + ../../src/acpica/source/components/resources/rsio.c \ + ../../src/acpica/source/components/resources/rsinfo.c \ + ../../src/acpica/source/components/resources/rsirq.c \ + ../../src/acpica/source/components/resources/rslist.c \ + ../../src/acpica/source/components/resources/rsmemory.c \ + ../../src/acpica/source/components/resources/rsmisc.c \ + ../../src/acpica/source/components/resources/rsutils.c \ + ../../src/acpica/source/components/resources/rsxface.c \ + ../../src/acpica/source/components/resources/rsserial.c \ + ../../src/acpica/source/components/resources/rsdumpinfo.c \ + ../../src/acpica/source/components/tables/tbdata.c \ + ../../src/acpica/source/components/tables/tbfadt.c \ + ../../src/acpica/source/components/tables/tbfind.c \ + ../../src/acpica/source/components/tables/tbinstal.c \ + ../../src/acpica/source/components/tables/tbutils.c \ + ../../src/acpica/source/components/tables/tbxface.c \ + ../../src/acpica/source/components/tables/tbxfroot.c \ + ../../src/acpica/source/components/tables/tbxfload.c \ + ../../src/acpica/source/components/tables/tbprint.c \ + ../../src/acpica/source/components/utilities/utaddress.c \ + ../../src/acpica/source/components/utilities/utalloc.c \ + ../../src/acpica/source/components/utilities/utascii.c \ + ../../src/acpica/source/components/utilities/utcache.c \ + ../../src/acpica/source/components/utilities/utcopy.c \ + ../../src/acpica/source/components/utilities/utdebug.c \ + ../../src/acpica/source/components/utilities/utdelete.c \ + ../../src/acpica/source/components/utilities/uteval.c \ + ../../src/acpica/source/components/utilities/utglobal.c \ + ../../src/acpica/source/components/utilities/uthex.c \ + ../../src/acpica/source/components/utilities/utids.c \ + ../../src/acpica/source/components/utilities/utinit.c \ + ../../src/acpica/source/components/utilities/utlock.c \ + ../../src/acpica/source/components/utilities/utmath.c \ + ../../src/acpica/source/components/utilities/utmisc.c \ + ../../src/acpica/source/components/utilities/utmutex.c \ + ../../src/acpica/source/components/utilities/utnonansi.c \ + ../../src/acpica/source/components/utilities/utobject.c \ + ../../src/acpica/source/components/utilities/utresdecode.c \ + ../../src/acpica/source/components/utilities/utresrc.c \ + ../../src/acpica/source/components/utilities/utstate.c \ + ../../src/acpica/source/components/utilities/utstrtoul64.c \ + ../../src/acpica/source/components/utilities/uttrack.c \ + ../../src/acpica/source/components/utilities/utosi.c \ + ../../src/acpica/source/components/utilities/utxferror.c \ + ../../src/acpica/source/components/utilities/utxface.c \ + ../../src/acpica/source/components/utilities/utdecode.c \ + ../../src/acpica/source/components/utilities/utexcep.c \ + ../../src/acpica/source/components/utilities/utpredef.c \ + ../../src/acpica/source/components/utilities/utstring.c \ + ../../src/acpica/source/components/utilities/utstrsuppt.c \ + ../../src/acpica/source/components/utilities/utownerid.c \ + ../../src/acpica/source/components/utilities/utxfinit.c \ + ../../src/acpica/source/components/utilities/uterror.c \ + ../../src/acpica/source/components/utilities/utbuffer.c \ + ../../src/acpica/source/components/utilities/utuuid.c \ + ../../src/acpica/source/common/acfileio.c \ + ../../src/acpica/source/common/acgetline.c \ + ../../src/acpica/source/common/ahids.c \ + ../../src/acpica/source/common/cmfsize.c \ + ../../src/acpica/source/common/ahtable.c \ + ../../src/acpica/source/common/ahuuids.c \ + ../../src/acpica/source/tools/acpiexec/aeinitfile.c \ + ../../src/acpica/source/tools/acpiexec/aehandlers.c \ + ../../src/acpica/source/tools/acpiexec/aeexception.c \ + ../../src/acpica/source/tools/acpiexec/aeregion.c \ + ../../src/acpica/source/tools/acpiexec/aeinstall.c \ + ../../src/acpica/source/os_specific/service_layers/osgendbg.c libfwtsacpica_la_LIBADD = \ - -L$(top_builddir)/src/lib/src -lfwts -lrt + -L../../src/lib/src -lfwts -lrt --include $(top_srcdir)/git.mk +-include ../../git.mk diff -Nru fwts-21.05.00/src/libfwtsiasl/Makefile.am fwts-21.06.00/src/libfwtsiasl/Makefile.am --- fwts-21.05.00/src/libfwtsiasl/Makefile.am 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/libfwtsiasl/Makefile.am 2021-06-21 05:43:14.000000000 +0000 @@ -26,8 +26,8 @@ -fno-strict-aliasing \ -D_LINUX \ -DACPI_ASL_COMPILER $(CFLAGS) \ - -I$(srcdir)/../acpica/source/include \ - -I$(srcdir)/../acpica/source/compiler + -I$(top_srcdir)/src/acpica/source/include \ + -I$(top_srcdir)/src/acpica/source/compiler AM_YFLAGS = -d @@ -36,52 +36,52 @@ # AM_LFLAGS = -i -ASL_PARSER = \ - $(srcdir)/../acpica/source/compiler/aslcstyle.y \ - $(srcdir)/../acpica/source/compiler/aslhelpers.y \ - $(srcdir)/../acpica/source/compiler/aslparser.y \ - $(srcdir)/../acpica/source/compiler/aslprimaries.y \ - $(srcdir)/../acpica/source/compiler/aslresources.y \ - $(srcdir)/../acpica/source/compiler/aslrules.y \ - $(srcdir)/../acpica/source/compiler/aslsupport.y \ - $(srcdir)/../acpica/source/compiler/asltokens.y \ - $(srcdir)/../acpica/source/compiler/asltypes.y +ASL_PARSER = \ + ../../src/acpica/source/compiler/aslcstyle.y \ + ../../src/acpica/source/compiler/aslhelpers.y \ + ../../src/acpica/source/compiler/aslparser.y \ + ../../src/acpica/source/compiler/aslprimaries.y \ + ../../src/acpica/source/compiler/aslresources.y \ + ../../src/acpica/source/compiler/aslrules.y \ + ../../src/acpica/source/compiler/aslsupport.y \ + ../../src/acpica/source/compiler/asltokens.y \ + ../../src/acpica/source/compiler/asltypes.y ASL_LEXER = - $(srcdir)/../acpica/source/compiler/aslcompiler.l \ - $(srcdir)/aslsupport.l \ - $(srcdir)/aslcompiler.y.h + ../../src/acpica/source/compiler/aslcompiler.l \ + aslsupport.l \ + aslcompiler.y.h -$(srcdir)/aslcompiler.y: $(ASL_PARSER) - m4 -P -I$(srcdir)/../acpica/source/compiler $(srcdir)/../acpica/source/compiler/aslparser.y > $(srcdir)/aslcompiler.y +aslcompiler.y: $(ASL_PARSER) + m4 -P -I$(top_srcdir)/src/acpica/source/compiler $(top_srcdir)/src/acpica/source/compiler/aslparser.y > aslcompiler.y -$(srcdir)/aslcompilerlex.c: $(ASL_LEXER) - ${LEX} ${AM_LFLAGS} -PAslCompiler -o$@ $(srcdir)/../acpica/source/compiler/aslcompiler.l +aslcompilerlex.c: $(ASL_LEXER) + ${LEX} ${AM_LFLAGS} -PAslCompiler -o$@ $(top_srcdir)/src/acpica/source/compiler/aslcompiler.l -.NOTPARALLEL: $(srcdir)/aslcompiler.c -$(srcdir)/aslcompiler.c $(srcdir)/aslcompiler.y.h: $(srcdir)/aslcompiler.y +.NOTPARALLEL: aslcompiler.c +aslcompiler.c aslcompiler.y.h: aslcompiler.y ${YACC} ${AM_YFLAGS} -d -baslcompiler -pAslCompiler $^ mv aslcompiler.tab.c aslcompiler.c cp aslcompiler.tab.h aslcompiler.y.h -.NOTPARALLEL: $(srcdir)/dtcompilerparserlex.c -$(srcdir)/dtcompilerparserlex.c $(srcdir)/dtcompilerparser.c $(srcdir)/dtcompilerparser.y.h: $(srcdir)/../acpica/source/compiler/dtcompilerparser.l $(srcdir)/../acpica/source/compiler/dtcompilerparser.y - ${LEX} ${AM_LFLAGS} -PDtCompilerParser -o$(srcdir)/dtcompilerparserlex.c $< - ${YACC} ${AM_YFLAGS} -bdtcompilerparser -pDtCompilerParser $(srcdir)/../acpica/source/compiler/dtcompilerparser.y +.NOTPARALLEL: dtcompilerparserlex.c +dtcompilerparserlex.c dtcompilerparser.c dtcompilerparser.y.h: $(top_srcdir)/src/acpica/source/compiler/dtcompilerparser.l $(top_srcdir)/src/acpica/source/compiler/dtcompilerparser.y + ${LEX} ${AM_LFLAGS} -PDtCompilerParser -odtcompilerparserlex.c $< + ${YACC} ${AM_YFLAGS} -bdtcompilerparser -pDtCompilerParser $(top_srcdir)/src/acpica/source/compiler/dtcompilerparser.y mv dtcompilerparser.tab.c dtcompilerparser.c cp dtcompilerparser.tab.h dtcompilerparser.y.h -.NOTPARALLEL: $(srcdir)/dtparserlex.c -$(srcdir)/dtparserlex.c $(srcdir)/dtparser.c $(srcdir)/dtparser.y.h: $(srcdir)/../acpica/source/compiler/dtparser.l $(srcdir)/../acpica/source/compiler/dtparser.y - ${LEX} ${AM_LFLAGS} -PDtParser -o$(srcdir)/dtparserlex.c $< - ${YACC} ${AM_YFLAGS} -bdtparser -pDtParser $(srcdir)/../acpica/source/compiler/dtparser.y +.NOTPARALLEL: dtparserlex.c +dtparserlex.c dtparser.c dtparser.y.h: $(top_srcdir)/src/acpica/source/compiler/dtparser.l $(top_srcdir)/src/acpica/source/compiler/dtparser.y + ${LEX} ${AM_LFLAGS} -PDtParser -odtparserlex.c $< + ${YACC} ${AM_YFLAGS} -bdtparser -pDtParser $(top_srcdir)/src/acpica/source/compiler/dtparser.y mv dtparser.tab.c dtparser.c cp dtparser.tab.h dtparser.y.h -.NOTPARALLEL: $(srcdir)/prparserlex.c -$(srcdir)/prparserlex.c $(srcdir)/prparser.c $(srcdir)/prparser.y.h: $(srcdir)/../acpica/source/compiler/prparser.l $(srcdir)/../acpica/source/compiler/prparser.y - ${LEX} ${AM_LFLAGS} -PPrParser -o$(srcdir)/prparserlex.c $< - ${YACC} ${AM_YFLAGS} -bprparser -pPrParser $(srcdir)/../acpica/source/compiler/prparser.y +.NOTPARALLEL: prparserlex.c +prparserlex.c prparser.c prparser.y.h: $(top_srcdir)/src/acpica/source/compiler/prparser.l $(top_srcdir)/src/acpica/source/compiler/prparser.y + ${LEX} ${AM_LFLAGS} -PPrParser -oprparserlex.c $< + ${YACC} ${AM_YFLAGS} -bprparser -pPrParser $(top_srcdir)/src/acpica/source/compiler/prparser.y mv prparser.tab.c prparser.c cp prparser.tab.h prparser.y.h @@ -119,206 +119,206 @@ dtparser.c \ prparserlex.c \ prparser.c \ - $(srcdir)/../acpica/source/common/adisasm.c \ - $(srcdir)/../acpica/source/common/acfileio.c \ - $(srcdir)/../acpica/source/common/adfile.c \ - $(srcdir)/../acpica/source/common/adwalk.c \ - $(srcdir)/../acpica/source/common/ahids.c \ - $(srcdir)/../acpica/source/common/ahpredef.c \ - $(srcdir)/../acpica/source/common/ahtable.c \ - $(srcdir)/../acpica/source/common/ahuuids.c \ - $(srcdir)/../acpica/source/compiler/aslallocate.c \ - $(srcdir)/../acpica/source/compiler/aslanalyze.c \ - $(srcdir)/../acpica/source/compiler/aslascii.c \ - $(srcdir)/../acpica/source/compiler/aslbtypes.c \ - $(srcdir)/../acpica/source/compiler/aslcache.c \ - $(srcdir)/../acpica/source/compiler/aslcodegen.c \ - $(srcdir)/../acpica/source/compiler/aslcompile.c \ - $(srcdir)/../acpica/source/compiler/asldebug.c \ - $(srcdir)/../acpica/source/compiler/aslerror.c \ - $(srcdir)/../acpica/source/compiler/aslexternal.c \ - $(srcdir)/../acpica/source/compiler/aslfiles.c \ - $(srcdir)/../acpica/source/compiler/aslfileio.c \ - $(srcdir)/../acpica/source/compiler/aslfold.c \ - $(srcdir)/../acpica/source/compiler/aslhelp.c \ - $(srcdir)/../acpica/source/compiler/aslhex.c \ - $(srcdir)/../acpica/source/compiler/asllength.c \ - $(srcdir)/../acpica/source/compiler/asllisting.c \ - $(srcdir)/../acpica/source/compiler/asllistsup.c \ - $(srcdir)/../acpica/source/compiler/aslload.c \ - $(srcdir)/../acpica/source/compiler/asllookup.c \ - $(srcdir)/../acpica/source/compiler/aslmain.c \ - $(srcdir)/../acpica/source/compiler/aslmap.c \ - $(srcdir)/../acpica/source/compiler/aslmapenter.c \ - $(srcdir)/../acpica/source/compiler/aslmapoutput.c \ - $(srcdir)/../acpica/source/compiler/aslmaputils.c \ - $(srcdir)/../acpica/source/compiler/aslmessages.c \ - $(srcdir)/../acpica/source/compiler/aslmethod.c \ - $(srcdir)/../acpica/source/compiler/aslnamesp.c \ - $(srcdir)/../acpica/source/compiler/asloffset.c \ - $(srcdir)/../acpica/source/compiler/aslopcodes.c \ - $(srcdir)/../acpica/source/compiler/asloperands.c \ - $(srcdir)/../acpica/source/compiler/aslopt.c \ - $(srcdir)/../acpica/source/compiler/asloptions.c \ - $(srcdir)/../acpica/source/compiler/aslparseop.c \ - $(srcdir)/../acpica/source/compiler/aslpredef.c \ - $(srcdir)/../acpica/source/compiler/aslprepkg.c \ - $(srcdir)/../acpica/source/compiler/aslprintf.c \ - $(srcdir)/../acpica/source/compiler/aslprune.c \ - $(srcdir)/../acpica/source/compiler/aslresource.c \ - $(srcdir)/../acpica/source/compiler/aslrestype1.c \ - $(srcdir)/../acpica/source/compiler/aslrestype1i.c \ - $(srcdir)/../acpica/source/compiler/aslrestype2.c \ - $(srcdir)/../acpica/source/compiler/aslrestype2d.c \ - $(srcdir)/../acpica/source/compiler/aslrestype2e.c \ - $(srcdir)/../acpica/source/compiler/aslrestype2q.c \ - $(srcdir)/../acpica/source/compiler/aslrestype2s.c \ - $(srcdir)/../acpica/source/compiler/aslrestype2w.c \ - $(srcdir)/../acpica/source/compiler/aslstartup.c \ - $(srcdir)/../acpica/source/compiler/aslstubs.c \ - $(srcdir)/../acpica/source/compiler/aslpld.c \ - $(srcdir)/../acpica/source/compiler/asltransform.c \ - $(srcdir)/../acpica/source/compiler/asltree.c \ - $(srcdir)/../acpica/source/compiler/aslutils.c \ - $(srcdir)/../acpica/source/compiler/asluuid.c \ - $(srcdir)/../acpica/source/compiler/aslwalks.c \ - $(srcdir)/../acpica/source/compiler/aslxref.c \ - $(srcdir)/../acpica/source/compiler/aslxrefout.c \ - $(srcdir)/../acpica/source/compiler/cvcompiler.c \ - $(srcdir)/../acpica/source/compiler/cvdisasm.c \ - $(srcdir)/../acpica/source/compiler/cvparser.c \ - $(srcdir)/../acpica/source/common/cmfsize.c \ - $(srcdir)/../acpica/source/components/debugger/dbfileio.c \ - $(srcdir)/../acpica/source/components/disassembler/dmbuffer.c \ - $(srcdir)/../acpica/source/components/disassembler/dmcstyle.c \ - $(srcdir)/../acpica/source/components/disassembler/dmdeferred.c \ - $(srcdir)/../acpica/source/common/dmextern.c \ - $(srcdir)/../acpica/source/components/disassembler/dmnames.c \ - $(srcdir)/../acpica/source/components/disassembler/dmopcode.c \ - $(srcdir)/../acpica/source/components/disassembler/dmresrc.c \ - $(srcdir)/../acpica/source/components/disassembler/dmresrcl.c \ - $(srcdir)/../acpica/source/components/disassembler/dmresrcl2.c \ - $(srcdir)/../acpica/source/components/disassembler/dmresrcs.c \ - $(srcdir)/../acpica/source/common/dmrestag.c \ - $(srcdir)/../acpica/source/common/dmswitch.c \ - $(srcdir)/../acpica/source/common/dmtable.c \ - $(srcdir)/../acpica/source/common/dmtables.c \ - $(srcdir)/../acpica/source/common/dmtbdump.c \ - $(srcdir)/../acpica/source/common/dmtbdump1.c \ - $(srcdir)/../acpica/source/common/dmtbdump2.c \ - $(srcdir)/../acpica/source/common/dmtbdump3.c \ - $(srcdir)/../acpica/source/common/dmtbinfo.c \ - $(srcdir)/../acpica/source/common/dmtbinfo1.c \ - $(srcdir)/../acpica/source/common/dmtbinfo2.c \ - $(srcdir)/../acpica/source/common/dmtbinfo3.c \ - $(srcdir)/../acpica/source/components/disassembler/dmutils.c \ - $(srcdir)/../acpica/source/components/disassembler/dmwalk.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsargs.c \ - $(srcdir)/../acpica/source/components/dispatcher/dscontrol.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsfield.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsobject.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsopcode.c \ - $(srcdir)/../acpica/source/components/dispatcher/dspkginit.c \ - $(srcdir)/../acpica/source/components/dispatcher/dsutils.c \ - $(srcdir)/../acpica/source/components/dispatcher/dswexec.c \ - $(srcdir)/../acpica/source/components/dispatcher/dswload.c \ - $(srcdir)/../acpica/source/components/dispatcher/dswload2.c \ - $(srcdir)/../acpica/source/components/dispatcher/dswscope.c \ - $(srcdir)/../acpica/source/components/dispatcher/dswstate.c \ - $(srcdir)/../acpica/source/compiler/dtcompile.c \ - $(srcdir)/../acpica/source/compiler/dtexpress.c \ - $(srcdir)/../acpica/source/compiler/dtfield.c \ - $(srcdir)/../acpica/source/compiler/dtio.c \ - $(srcdir)/../acpica/source/compiler/dtsubtable.c \ - $(srcdir)/../acpica/source/compiler/dttable.c \ - $(srcdir)/../acpica/source/compiler/dttable1.c \ - $(srcdir)/../acpica/source/compiler/dttable2.c \ - $(srcdir)/../acpica/source/compiler/dttemplate.c \ - $(srcdir)/../acpica/source/compiler/dtutils.c \ - $(srcdir)/../acpica/source/components/executer/exconcat.c \ - $(srcdir)/../acpica/source/components/executer/exconvrt.c \ - $(srcdir)/../acpica/source/components/executer/excreate.c \ - $(srcdir)/../acpica/source/components/executer/exdump.c \ - $(srcdir)/../acpica/source/components/executer/exmisc.c \ - $(srcdir)/../acpica/source/components/executer/exmutex.c \ - $(srcdir)/../acpica/source/components/executer/exnames.c \ - $(srcdir)/../acpica/source/components/executer/exoparg1.c \ - $(srcdir)/../acpica/source/components/executer/exoparg2.c \ - $(srcdir)/../acpica/source/components/executer/exoparg3.c \ - $(srcdir)/../acpica/source/components/executer/exoparg6.c \ - $(srcdir)/../acpica/source/components/executer/exprep.c \ - $(srcdir)/../acpica/source/components/executer/exregion.c \ - $(srcdir)/../acpica/source/components/executer/exresnte.c \ - $(srcdir)/../acpica/source/components/executer/exresolv.c \ - $(srcdir)/../acpica/source/components/executer/exresop.c \ - $(srcdir)/../acpica/source/components/executer/exstore.c \ - $(srcdir)/../acpica/source/components/executer/exstoren.c \ - $(srcdir)/../acpica/source/components/executer/exstorob.c \ - $(srcdir)/../acpica/source/components/executer/exsystem.c \ - $(srcdir)/../acpica/source/components/executer/exutils.c \ - $(srcdir)/../acpica/source/common/getopt.c \ - $(srcdir)/../acpica/source/components/namespace/nsaccess.c \ - $(srcdir)/../acpica/source/components/namespace/nsalloc.c \ - $(srcdir)/../acpica/source/components/namespace/nsdump.c \ - $(srcdir)/../acpica/source/components/namespace/nsnames.c \ - $(srcdir)/../acpica/source/components/namespace/nsobject.c \ - $(srcdir)/../acpica/source/components/namespace/nsparse.c \ - $(srcdir)/../acpica/source/components/namespace/nssearch.c \ - $(srcdir)/../acpica/source/components/namespace/nsutils.c \ - $(srcdir)/../acpica/source/components/namespace/nswalk.c \ - $(srcdir)/../acpica/source/components/namespace/nsxfobj.c \ - $(srcdir)/../acpica/source/os_specific/service_layers/osunixxf.c\ - $(srcdir)/../acpica/source/compiler/prexpress.c \ - $(srcdir)/../acpica/source/compiler/prmacros.c \ - $(srcdir)/../acpica/source/compiler/prscan.c \ - $(srcdir)/../acpica/source/compiler/prutils.c \ - $(srcdir)/../acpica/source/components/parser/psargs.c \ - $(srcdir)/../acpica/source/components/parser/psloop.c \ - $(srcdir)/../acpica/source/components/parser/psobject.c \ - $(srcdir)/../acpica/source/components/parser/psopcode.c \ - $(srcdir)/../acpica/source/components/parser/psopinfo.c \ - $(srcdir)/../acpica/source/components/parser/psparse.c \ - $(srcdir)/../acpica/source/components/parser/psscope.c \ - $(srcdir)/../acpica/source/components/parser/pstree.c \ - $(srcdir)/../acpica/source/components/parser/psutils.c \ - $(srcdir)/../acpica/source/components/parser/pswalk.c \ - $(srcdir)/../acpica/source/components/tables/tbdata.c \ - $(srcdir)/../acpica/source/components/tables/tbfadt.c \ - $(srcdir)/../acpica/source/components/tables/tbinstal.c \ - $(srcdir)/../acpica/source/components/tables/tbprint.c \ - $(srcdir)/../acpica/source/components/tables/tbutils.c \ - $(srcdir)/../acpica/source/components/tables/tbxface.c \ - $(srcdir)/../acpica/source/components/tables/tbxfload.c \ - $(srcdir)/../acpica/source/components/utilities/utaddress.c \ - $(srcdir)/../acpica/source/components/utilities/utalloc.c \ - $(srcdir)/../acpica/source/components/utilities/utascii.c \ - $(srcdir)/../acpica/source/components/utilities/utbuffer.c \ - $(srcdir)/../acpica/source/components/utilities/utcache.c \ - $(srcdir)/../acpica/source/components/utilities/utcopy.c \ - $(srcdir)/../acpica/source/components/utilities/utdebug.c \ - $(srcdir)/../acpica/source/components/utilities/utdecode.c \ - $(srcdir)/../acpica/source/components/utilities/utdelete.c \ - $(srcdir)/../acpica/source/components/utilities/uterror.c \ - $(srcdir)/../acpica/source/components/utilities/utexcep.c \ - $(srcdir)/../acpica/source/components/utilities/utglobal.c \ - $(srcdir)/../acpica/source/components/utilities/uthex.c \ - $(srcdir)/../acpica/source/components/utilities/utinit.c \ - $(srcdir)/../acpica/source/components/utilities/utlock.c \ - $(srcdir)/../acpica/source/components/utilities/utmath.c \ - $(srcdir)/../acpica/source/components/utilities/utmisc.c \ - $(srcdir)/../acpica/source/components/utilities/utmutex.c \ - $(srcdir)/../acpica/source/components/utilities/utnonansi.c \ - $(srcdir)/../acpica/source/components/utilities/utobject.c \ - $(srcdir)/../acpica/source/components/utilities/utownerid.c \ - $(srcdir)/../acpica/source/components/utilities/utpredef.c \ - $(srcdir)/../acpica/source/components/utilities/utresdecode.c \ - $(srcdir)/../acpica/source/components/utilities/utresrc.c \ - $(srcdir)/../acpica/source/components/utilities/utstate.c \ - $(srcdir)/../acpica/source/components/utilities/utstrtoul64.c \ - $(srcdir)/../acpica/source/components/utilities/utstrsuppt.c \ - $(srcdir)/../acpica/source/components/utilities/utstring.c \ - $(srcdir)/../acpica/source/components/utilities/utuuid.c \ - $(srcdir)/../acpica/source/components/utilities/utxface.c \ - $(srcdir)/../acpica/source/components/utilities/utxferror.c + ../../src/acpica/source/common/adisasm.c \ + ../../src/acpica/source/common/acfileio.c \ + ../../src/acpica/source/common/adfile.c \ + ../../src/acpica/source/common/adwalk.c \ + ../../src/acpica/source/common/ahids.c \ + ../../src/acpica/source/common/ahpredef.c \ + ../../src/acpica/source/common/ahtable.c \ + ../../src/acpica/source/common/ahuuids.c \ + ../../src/acpica/source/compiler/aslallocate.c \ + ../../src/acpica/source/compiler/aslanalyze.c \ + ../../src/acpica/source/compiler/aslascii.c \ + ../../src/acpica/source/compiler/aslbtypes.c \ + ../../src/acpica/source/compiler/aslcache.c \ + ../../src/acpica/source/compiler/aslcodegen.c \ + ../../src/acpica/source/compiler/aslcompile.c \ + ../../src/acpica/source/compiler/asldebug.c \ + ../../src/acpica/source/compiler/aslerror.c \ + ../../src/acpica/source/compiler/aslexternal.c \ + ../../src/acpica/source/compiler/aslfiles.c \ + ../../src/acpica/source/compiler/aslfileio.c \ + ../../src/acpica/source/compiler/aslfold.c \ + ../../src/acpica/source/compiler/aslhelp.c \ + ../../src/acpica/source/compiler/aslhex.c \ + ../../src/acpica/source/compiler/asllength.c \ + ../../src/acpica/source/compiler/asllisting.c \ + ../../src/acpica/source/compiler/asllistsup.c \ + ../../src/acpica/source/compiler/aslload.c \ + ../../src/acpica/source/compiler/asllookup.c \ + ../../src/acpica/source/compiler/aslmain.c \ + ../../src/acpica/source/compiler/aslmap.c \ + ../../src/acpica/source/compiler/aslmapenter.c \ + ../../src/acpica/source/compiler/aslmapoutput.c \ + ../../src/acpica/source/compiler/aslmaputils.c \ + ../../src/acpica/source/compiler/aslmessages.c \ + ../../src/acpica/source/compiler/aslmethod.c \ + ../../src/acpica/source/compiler/aslnamesp.c \ + ../../src/acpica/source/compiler/asloffset.c \ + ../../src/acpica/source/compiler/aslopcodes.c \ + ../../src/acpica/source/compiler/asloperands.c \ + ../../src/acpica/source/compiler/aslopt.c \ + ../../src/acpica/source/compiler/asloptions.c \ + ../../src/acpica/source/compiler/aslparseop.c \ + ../../src/acpica/source/compiler/aslpredef.c \ + ../../src/acpica/source/compiler/aslprepkg.c \ + ../../src/acpica/source/compiler/aslprintf.c \ + ../../src/acpica/source/compiler/aslprune.c \ + ../../src/acpica/source/compiler/aslresource.c \ + ../../src/acpica/source/compiler/aslrestype1.c \ + ../../src/acpica/source/compiler/aslrestype1i.c \ + ../../src/acpica/source/compiler/aslrestype2.c \ + ../../src/acpica/source/compiler/aslrestype2d.c \ + ../../src/acpica/source/compiler/aslrestype2e.c \ + ../../src/acpica/source/compiler/aslrestype2q.c \ + ../../src/acpica/source/compiler/aslrestype2s.c \ + ../../src/acpica/source/compiler/aslrestype2w.c \ + ../../src/acpica/source/compiler/aslstartup.c \ + ../../src/acpica/source/compiler/aslstubs.c \ + ../../src/acpica/source/compiler/aslpld.c \ + ../../src/acpica/source/compiler/asltransform.c \ + ../../src/acpica/source/compiler/asltree.c \ + ../../src/acpica/source/compiler/aslutils.c \ + ../../src/acpica/source/compiler/asluuid.c \ + ../../src/acpica/source/compiler/aslwalks.c \ + ../../src/acpica/source/compiler/aslxref.c \ + ../../src/acpica/source/compiler/aslxrefout.c \ + ../../src/acpica/source/compiler/cvcompiler.c \ + ../../src/acpica/source/compiler/cvdisasm.c \ + ../../src/acpica/source/compiler/cvparser.c \ + ../../src/acpica/source/common/cmfsize.c \ + ../../src/acpica/source/components/debugger/dbfileio.c \ + ../../src/acpica/source/components/disassembler/dmbuffer.c \ + ../../src/acpica/source/components/disassembler/dmcstyle.c \ + ../../src/acpica/source/components/disassembler/dmdeferred.c \ + ../../src/acpica/source/common/dmextern.c \ + ../../src/acpica/source/components/disassembler/dmnames.c \ + ../../src/acpica/source/components/disassembler/dmopcode.c \ + ../../src/acpica/source/components/disassembler/dmresrc.c \ + ../../src/acpica/source/components/disassembler/dmresrcl.c \ + ../../src/acpica/source/components/disassembler/dmresrcl2.c \ + ../../src/acpica/source/components/disassembler/dmresrcs.c \ + ../../src/acpica/source/common/dmrestag.c \ + ../../src/acpica/source/common/dmswitch.c \ + ../../src/acpica/source/common/dmtable.c \ + ../../src/acpica/source/common/dmtables.c \ + ../../src/acpica/source/common/dmtbdump.c \ + ../../src/acpica/source/common/dmtbdump1.c \ + ../../src/acpica/source/common/dmtbdump2.c \ + ../../src/acpica/source/common/dmtbdump3.c \ + ../../src/acpica/source/common/dmtbinfo.c \ + ../../src/acpica/source/common/dmtbinfo1.c \ + ../../src/acpica/source/common/dmtbinfo2.c \ + ../../src/acpica/source/common/dmtbinfo3.c \ + ../../src/acpica/source/components/disassembler/dmutils.c \ + ../../src/acpica/source/components/disassembler/dmwalk.c \ + ../../src/acpica/source/components/dispatcher/dsargs.c \ + ../../src/acpica/source/components/dispatcher/dscontrol.c \ + ../../src/acpica/source/components/dispatcher/dsfield.c \ + ../../src/acpica/source/components/dispatcher/dsobject.c \ + ../../src/acpica/source/components/dispatcher/dsopcode.c \ + ../../src/acpica/source/components/dispatcher/dspkginit.c \ + ../../src/acpica/source/components/dispatcher/dsutils.c \ + ../../src/acpica/source/components/dispatcher/dswexec.c \ + ../../src/acpica/source/components/dispatcher/dswload.c \ + ../../src/acpica/source/components/dispatcher/dswload2.c \ + ../../src/acpica/source/components/dispatcher/dswscope.c \ + ../../src/acpica/source/components/dispatcher/dswstate.c \ + ../../src/acpica/source/compiler/dtcompile.c \ + ../../src/acpica/source/compiler/dtexpress.c \ + ../../src/acpica/source/compiler/dtfield.c \ + ../../src/acpica/source/compiler/dtio.c \ + ../../src/acpica/source/compiler/dtsubtable.c \ + ../../src/acpica/source/compiler/dttable.c \ + ../../src/acpica/source/compiler/dttable1.c \ + ../../src/acpica/source/compiler/dttable2.c \ + ../../src/acpica/source/compiler/dttemplate.c \ + ../../src/acpica/source/compiler/dtutils.c \ + ../../src/acpica/source/components/executer/exconcat.c \ + ../../src/acpica/source/components/executer/exconvrt.c \ + ../../src/acpica/source/components/executer/excreate.c \ + ../../src/acpica/source/components/executer/exdump.c \ + ../../src/acpica/source/components/executer/exmisc.c \ + ../../src/acpica/source/components/executer/exmutex.c \ + ../../src/acpica/source/components/executer/exnames.c \ + ../../src/acpica/source/components/executer/exoparg1.c \ + ../../src/acpica/source/components/executer/exoparg2.c \ + ../../src/acpica/source/components/executer/exoparg3.c \ + ../../src/acpica/source/components/executer/exoparg6.c \ + ../../src/acpica/source/components/executer/exprep.c \ + ../../src/acpica/source/components/executer/exregion.c \ + ../../src/acpica/source/components/executer/exresnte.c \ + ../../src/acpica/source/components/executer/exresolv.c \ + ../../src/acpica/source/components/executer/exresop.c \ + ../../src/acpica/source/components/executer/exstore.c \ + ../../src/acpica/source/components/executer/exstoren.c \ + ../../src/acpica/source/components/executer/exstorob.c \ + ../../src/acpica/source/components/executer/exsystem.c \ + ../../src/acpica/source/components/executer/exutils.c \ + ../../src/acpica/source/common/getopt.c \ + ../../src/acpica/source/components/namespace/nsaccess.c \ + ../../src/acpica/source/components/namespace/nsalloc.c \ + ../../src/acpica/source/components/namespace/nsdump.c \ + ../../src/acpica/source/components/namespace/nsnames.c \ + ../../src/acpica/source/components/namespace/nsobject.c \ + ../../src/acpica/source/components/namespace/nsparse.c \ + ../../src/acpica/source/components/namespace/nssearch.c \ + ../../src/acpica/source/components/namespace/nsutils.c \ + ../../src/acpica/source/components/namespace/nswalk.c \ + ../../src/acpica/source/components/namespace/nsxfobj.c \ + ../../src/acpica/source/os_specific/service_layers/osunixxf.c \ + ../../src/acpica/source/compiler/prexpress.c \ + ../../src/acpica/source/compiler/prmacros.c \ + ../../src/acpica/source/compiler/prscan.c \ + ../../src/acpica/source/compiler/prutils.c \ + ../../src/acpica/source/components/parser/psargs.c \ + ../../src/acpica/source/components/parser/psloop.c \ + ../../src/acpica/source/components/parser/psobject.c \ + ../../src/acpica/source/components/parser/psopcode.c \ + ../../src/acpica/source/components/parser/psopinfo.c \ + ../../src/acpica/source/components/parser/psparse.c \ + ../../src/acpica/source/components/parser/psscope.c \ + ../../src/acpica/source/components/parser/pstree.c \ + ../../src/acpica/source/components/parser/psutils.c \ + ../../src/acpica/source/components/parser/pswalk.c \ + ../../src/acpica/source/components/tables/tbdata.c \ + ../../src/acpica/source/components/tables/tbfadt.c \ + ../../src/acpica/source/components/tables/tbinstal.c \ + ../../src/acpica/source/components/tables/tbprint.c \ + ../../src/acpica/source/components/tables/tbutils.c \ + ../../src/acpica/source/components/tables/tbxface.c \ + ../../src/acpica/source/components/tables/tbxfload.c \ + ../../src/acpica/source/components/utilities/utaddress.c \ + ../../src/acpica/source/components/utilities/utalloc.c \ + ../../src/acpica/source/components/utilities/utascii.c \ + ../../src/acpica/source/components/utilities/utbuffer.c \ + ../../src/acpica/source/components/utilities/utcache.c \ + ../../src/acpica/source/components/utilities/utcopy.c \ + ../../src/acpica/source/components/utilities/utdebug.c \ + ../../src/acpica/source/components/utilities/utdecode.c \ + ../../src/acpica/source/components/utilities/utdelete.c \ + ../../src/acpica/source/components/utilities/uterror.c \ + ../../src/acpica/source/components/utilities/utexcep.c \ + ../../src/acpica/source/components/utilities/utglobal.c \ + ../../src/acpica/source/components/utilities/uthex.c \ + ../../src/acpica/source/components/utilities/utinit.c \ + ../../src/acpica/source/components/utilities/utlock.c \ + ../../src/acpica/source/components/utilities/utmath.c \ + ../../src/acpica/source/components/utilities/utmisc.c \ + ../../src/acpica/source/components/utilities/utmutex.c \ + ../../src/acpica/source/components/utilities/utnonansi.c \ + ../../src/acpica/source/components/utilities/utobject.c \ + ../../src/acpica/source/components/utilities/utownerid.c \ + ../../src/acpica/source/components/utilities/utpredef.c \ + ../../src/acpica/source/components/utilities/utresdecode.c \ + ../../src/acpica/source/components/utilities/utresrc.c \ + ../../src/acpica/source/components/utilities/utstate.c \ + ../../src/acpica/source/components/utilities/utstrtoul64.c \ + ../../src/acpica/source/components/utilities/utstrsuppt.c \ + ../../src/acpica/source/components/utilities/utstring.c \ + ../../src/acpica/source/components/utilities/utuuid.c \ + ../../src/acpica/source/components/utilities/utxface.c \ + ../../src/acpica/source/components/utilities/utxferror.c --include $(top_srcdir)/git.mk +-include ../../git.mk diff -Nru fwts-21.05.00/src/Makefile.am fwts-21.06.00/src/Makefile.am --- fwts-21.05.00/src/Makefile.am 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/Makefile.am 2021-06-21 05:43:14.000000000 +0000 @@ -208,13 +208,13 @@ fwts_LDFLAGS = -lm -lbsd `pkg-config --libs glib-2.0 gio-2.0` fwts_LDADD = \ + -lfwts \ -L$(top_builddir)/src \ -L$(top_builddir)/src/acpica \ -L$(top_builddir)/src/libfwtsiasl \ -L$(top_builddir)/src/libfwtsacpica \ -L$(top_builddir)/src/lib/src \ - -lfwtsacpica \ - -lfwts + -lfwtsacpica man_MANS = ../doc/fwts.1 ../doc/fwts-collect.1 ../doc/fwts-frontend-text.1 diff -Nru fwts-21.05.00/src/sbbr/acpitables/acpitables.c fwts-21.06.00/src/sbbr/acpitables/acpitables.c --- fwts-21.05.00/src/sbbr/acpitables/acpitables.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/sbbr/acpitables/acpitables.c 2021-06-21 05:43:14.000000000 +0000 @@ -195,22 +195,42 @@ return FWTS_OK; } +/* List of mandatory ACPI tables (SBBR 4.2.1) */ +static const char *mandatory_acpi_tables[] = { + "RSDP", + "XSDT", + "FACP", + "DSDT", + "SSDT", + "MADT", + "GTDT", + "DBG2", + "SPCR", + "MCFG", + "PPTT", + NULL +}; + /* List of ACPI tables recommended by SBBR 4.2.2 */ static const char *recommended_acpi_tables[] = { - "MCFG", + /* I/O Topology */ "IORT", + /* Platform Error Interfaces */ "BERT", "EINJ", "ERST", "HEST", - "RASF", - "SPMI", + "SDEI", + /* NUMA */ "SLIT", "SRAT", - "CSRT", - "ECDT", - "MPST", + "HMAT", + /* Platform Communications Channel (PCC) */ "PCCT", + /* Platform Debug Trigger */ + "PDTT", + /* NVDIMM Firmware Interface */ + "NFIT", NULL }; @@ -235,6 +255,19 @@ { uint32_t i; + for (i = 0; mandatory_acpi_tables[i] != NULL; i++) { + fwts_acpi_table_info *info; + + info = sbbr_search_acpi_tables(fw, mandatory_acpi_tables[i]); + if (info == NULL) { + fwts_failed(fw, LOG_LEVEL_CRITICAL, "SBBRTableNotFound", + "SBBR mandatory ACPI table \"%s\" not found.", mandatory_acpi_tables[i]); + } else { + fwts_passed(fw, "SBBR mandatory ACPI table \"%s\" found.", + mandatory_acpi_tables[i]); + } + } + for (i = 0; recommended_acpi_tables[i] != NULL; i++) { fwts_acpi_table_info *info; @@ -253,7 +286,7 @@ static fwts_framework_minor_test acpi_table_sbbr_check_tests[] = { { acpi_table_sbbr_namespace_check_test1, "Test that processors only exist in the _SB namespace." }, { acpi_table_sbbr_check_test2, "Test DSDT and SSDT tables are implemented." }, - { acpi_table_sbbr_check_test3, "Check for recommended ACPI tables." }, + { acpi_table_sbbr_check_test3, "Check for mandatory and recommended ACPI tables." }, { NULL, NULL } }; @@ -262,6 +295,6 @@ .minor_tests = acpi_table_sbbr_check_tests }; -FWTS_REGISTER("acpi_sbbr", &acpi_table_sbbr_check_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_SBBR) +FWTS_REGISTER("acpi_sbbr", &acpi_table_sbbr_check_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/sbbr/fadt/fadt.c fwts-21.06.00/src/sbbr/fadt/fadt.c --- fwts-21.05.00/src/sbbr/fadt/fadt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/sbbr/fadt/fadt.c 2021-06-21 05:43:14.000000000 +0000 @@ -417,5 +417,5 @@ .minor_tests = fadt_sbbr_tests }; -FWTS_REGISTER("fadt_sbbr", &fadt_sbbr_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_SBBR) +FWTS_REGISTER("fadt_sbbr", &fadt_sbbr_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/sbbr/rsdp/rsdp.c fwts-21.06.00/src/sbbr/rsdp/rsdp.c --- fwts-21.05.00/src/sbbr/rsdp/rsdp.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/sbbr/rsdp/rsdp.c 2021-06-21 05:43:14.000000000 +0000 @@ -126,6 +126,6 @@ .minor_tests = rsdp_sbbr_tests }; -FWTS_REGISTER("rsdp_sbbr", &rsdp_sbbr_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_SBBR) +FWTS_REGISTER("rsdp_sbbr", &rsdp_sbbr_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_SBBR) #endif diff -Nru fwts-21.05.00/src/tpm/tpmevlog/tpmevlog.c fwts-21.06.00/src/tpm/tpmevlog/tpmevlog.c --- fwts-21.05.00/src/tpm/tpmevlog/tpmevlog.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/tpm/tpmevlog/tpmevlog.c 2021-06-21 05:43:14.000000000 +0000 @@ -497,4 +497,4 @@ .minor_tests = tpmevlog_tests }; -FWTS_REGISTER("tpmevlog", &tpmevlog_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_ROOT_PRIV) +FWTS_REGISTER("tpmevlog", &tpmevlog_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV) diff -Nru fwts-21.05.00/src/uefi/csm/csm.c fwts-21.06.00/src/uefi/csm/csm.c --- fwts-21.05.00/src/uefi/csm/csm.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/uefi/csm/csm.c 2021-06-21 05:43:14.000000000 +0000 @@ -120,6 +120,6 @@ .minor_tests = csm_tests }; -FWTS_REGISTER("csm", &csm_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_UEFI | FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV) +FWTS_REGISTER("csm", &csm_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UEFI | FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV) #endif diff -Nru fwts-21.05.00/src/uefi/esrt/esrt.c fwts-21.06.00/src/uefi/esrt/esrt.c --- fwts-21.05.00/src/uefi/esrt/esrt.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/uefi/esrt/esrt.c 2021-06-21 05:43:14.000000000 +0000 @@ -263,6 +263,6 @@ .minor_tests = esrt_tests }; -FWTS_REGISTER("esrt", &esrt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_UEFI | FWTS_FLAG_ROOT_PRIV) +FWTS_REGISTER("esrt", &esrt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UEFI | FWTS_FLAG_ROOT_PRIV) #endif diff -Nru fwts-21.05.00/src/uefi/securebootcert/securebootcert.c fwts-21.06.00/src/uefi/securebootcert/securebootcert.c --- fwts-21.05.00/src/uefi/securebootcert/securebootcert.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/uefi/securebootcert/securebootcert.c 2021-06-21 05:43:14.000000000 +0000 @@ -609,6 +609,6 @@ .minor_tests = securebootcert_tests }; -FWTS_REGISTER("securebootcert", &securebootcert_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV) +FWTS_REGISTER("securebootcert", &securebootcert_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV) #endif diff -Nru fwts-21.05.00/src/uefi/uefibootpath/uefibootpath.c fwts-21.06.00/src/uefi/uefibootpath/uefibootpath.c --- fwts-21.05.00/src/uefi/uefibootpath/uefibootpath.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/uefi/uefibootpath/uefibootpath.c 2021-06-21 05:43:14.000000000 +0000 @@ -936,6 +936,6 @@ .minor_tests = uefibootpath_tests }; -FWTS_REGISTER("uefibootpath", &uefibootpath_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_UEFI | FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); +FWTS_REGISTER("uefibootpath", &uefibootpath_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UEFI | FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif diff -Nru fwts-21.05.00/src/uefi/uefirtauthvar/uefirtauthvar.c fwts-21.06.00/src/uefi/uefirtauthvar/uefirtauthvar.c --- fwts-21.05.00/src/uefi/uefirtauthvar/uefirtauthvar.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/uefi/uefirtauthvar/uefirtauthvar.c 2021-06-21 05:43:14.000000000 +0000 @@ -796,6 +796,6 @@ .minor_tests = uefirtauthvar_tests, }; -FWTS_REGISTER("uefirtauthvar", &uefirtauthvar_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV) +FWTS_REGISTER("uefirtauthvar", &uefirtauthvar_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV) #endif diff -Nru fwts-21.05.00/src/uefi/uefirtmisc/uefirtmisc.c fwts-21.06.00/src/uefi/uefirtmisc/uefirtmisc.c --- fwts-21.05.00/src/uefi/uefirtmisc/uefirtmisc.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/uefi/uefirtmisc/uefirtmisc.c 2021-06-21 05:43:14.000000000 +0000 @@ -346,6 +346,6 @@ .minor_tests = uefirtmisc_tests }; -FWTS_REGISTER("uefirtmisc", &uefirtmisc_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_TEST_XBBR) +FWTS_REGISTER("uefirtmisc", &uefirtmisc_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_XBBR) #endif diff -Nru fwts-21.05.00/src/uefi/uefirttime/uefirttime.c fwts-21.06.00/src/uefi/uefirttime/uefirttime.c --- fwts-21.05.00/src/uefi/uefirttime/uefirttime.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/uefi/uefirttime/uefirttime.c 2021-06-21 05:43:14.000000000 +0000 @@ -1272,6 +1272,12 @@ } else fwts_skipped(fw, "GetTime runtime service supported, skip test."); + /* set test time for settime and setwakeuptime tests */ + memset(&efi_time, 0, sizeof(efi_time)); + efi_time.Year = 2000; + efi_time.Month = 1; + efi_time.Day = 1; + if (!(runtimeservicessupported & EFI_RT_SUPPORTED_SET_TIME)) { settime.Time = &efi_time; status = ~0ULL; @@ -1427,6 +1433,6 @@ .minor_tests = uefirttime_tests }; -FWTS_REGISTER("uefirttime", &uefirttime_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_TEST_XBBR) +FWTS_REGISTER("uefirttime", &uefirttime_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_XBBR) #endif diff -Nru fwts-21.05.00/src/uefi/uefirtvariable/uefirtvariable.c fwts-21.06.00/src/uefi/uefirtvariable/uefirtvariable.c --- fwts-21.05.00/src/uefi/uefirtvariable/uefirtvariable.c 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/uefi/uefirtvariable/uefirtvariable.c 2021-06-21 05:43:14.000000000 +0000 @@ -2391,6 +2391,6 @@ .options_check = options_check, }; -FWTS_REGISTER("uefirtvariable", &uefirtvariable_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_TEST_XBBR) +FWTS_REGISTER("uefirtvariable", &uefirtvariable_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV | FWTS_FLAG_XBBR) #endif diff -Nru fwts-21.05.00/src/utilities/Makefile.am fwts-21.06.00/src/utilities/Makefile.am --- fwts-21.05.00/src/utilities/Makefile.am 2021-05-20 08:40:13.000000000 +0000 +++ fwts-21.06.00/src/utilities/Makefile.am 2021-06-21 05:43:14.000000000 +0000 @@ -20,7 +20,7 @@ -I$(srcdir)/../lib/include bin_PROGRAMS = kernelscan -kernelscan_SOURCES = kernelscan.c $(srcdir)/../lib/src/fwts_json.c +kernelscan_SOURCES = kernelscan.c ../../src/lib/src/fwts_json.c -include $(top_srcdir)/git.mk