tree b9034ffcb2e6e75449224a55ba179c73dbb5da0f
parent e1ea9656cd146f80a54475d3e8b80248a30cd673
author Martin L Roth <gaumless@gmail.com> 1710349345 +0000
committer Martin L Roth <gaumless@gmail.com> 1710352913 +0000

Revert "soc/intel/xeon_sp: Rewrite acpi_fill_dmar"

This reverts commit 6833e8c01afc2827f150135f3805dc71820ddaa4.

Reason for revert: Submitted out of order and broke the coreboot build.

src/soc/intel/xeon_sp/uncore_acpi.c:275:6: error: call to undeclared function 'is_dev_on_domain0'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  275 |         if (is_dev_on_domain0(iommu)) {
      |             ^
src/soc/intel/xeon_sp/uncore_acpi.c:343:35: error: call to undeclared function 'is_dev_on_ioat_domain'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  343 |         if (CONFIG(HAVE_IOAT_DOMAINS) && is_dev_on_ioat_domain(iommu)) {
      |                                          ^
src/soc/intel/xeon_sp/uncore_acpi.c:423:4: error: indirection of non-volatile null pointer will be deleted, not trap [-Werror,-Wnull-dereference]
  423 |                         assert(vtd_mmio_cap != 0xffffffffffffffff);
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/include/assert.h:85:27: note: expanded from macro 'assert'
   85 | #define assert(statement)       ASSERT(statement)
      |                                 ^~~~~~~~~~~~~~~~~
src/include/assert.h:56:7: note: expanded from macro 'ASSERT'
   56 |         if (!__build_time_assert(x) && !(x)) {                          \
      |              ^~~~~~~~~~~~~~~~~~~~~~
src/include/assert.h:27:40: note: expanded from macro '__build_time_assert'
   27 |         (__builtin_constant_p(x) ? ((x) ? 1 : dead_code_t(int)) : 0)
      |                                               ^~~~~~~~~~~~~~~~
src/include/assert.h:105:2: note: expanded from macro 'dead_code_t'
  105 |         *(type *)(uintptr_t)0; \
      |         ^~~~~~~~~~~~~~~~~~~~~
src/soc/intel/xeon_sp/uncore_acpi.c:423:4: note: consider using __builtin_trap() or qualifying pointer with 'volatile'
src/include/assert.h:85:27: note: expanded from macro 'assert'
   85 | #define assert(statement)       ASSERT(statement)
      |                                 ^
src/include/assert.h:56:7: note: expanded from macro 'ASSERT'
   56 |         if (!__build_time_assert(x) && !(x)) {                          \
      |              ^
src/include/assert.h:27:40: note: expanded from macro '__build_time_assert'
   27 |         (__builtin_constant_p(x) ? ((x) ? 1 : dead_code_t(int)) : 0)
      |                                               ^
src/include/assert.h:105:2: note: expanded from macro 'dead_code_t'
  105 |         *(type *)(uintptr_t)0; \
      |         ^
src/soc/intel/xeon_sp/uncore_acpi.c:455:3: error: indirection of non-volatile null pointer will be deleted, not trap [-Werror,-Wnull-dereference]
  455 |                 assert(ptr);
      |                 ^~~~~~~~~~~
src/include/assert.h:85:27: note: expanded from macro 'assert'
   85 | #define assert(statement)       ASSERT(statement)
      |                                 ^~~~~~~~~~~~~~~~~
src/include/assert.h:56:7: note: expanded from macro 'ASSERT'
   56 |         if (!__build_time_assert(x) && !(x)) {                          \
      |              ^~~~~~~~~~~~~~~~~~~~~~
src/include/assert.h:27:40: note: expanded from macro '__build_time_assert'
   27 |         (__builtin_constant_p(x) ? ((x) ? 1 : dead_code_t(int)) : 0)
      |                                               ^~~~~~~~~~~~~~~~
src/include/assert.h:105:2: note: expanded from macro 'dead_code_t'
  105 |         *(type *)(uintptr_t)0; \
      |         ^~~~~~~~~~~~~~~~~~~~~
src/soc/intel/xeon_sp/uncore_acpi.c:455:3: note: consider using __builtin_trap() or qualifying pointer with 'volatile'
src/include/assert.h:85:27: note: expanded from macro 'assert'
   85 | #define assert(statement)       ASSERT(statement)
      |                                 ^
src/include/assert.h:56:7: note: expanded from macro 'ASSERT'
   56 |         if (!__build_time_assert(x) && !(x)) {                          \
      |              ^
src/include/assert.h:27:40: note: expanded from macro '__build_time_assert'
   27 |         (__builtin_constant_p(x) ? ((x) ? 1 : dead_code_t(int)) : 0)
      |                                               ^
src/include/assert.h:105:2: note: expanded from macro 'dead_code_t'
  105 |         *(type *)(uintptr_t)0; \
      |         ^
src/soc/intel/xeon_sp/uncore_acpi.c:540:7: error: call to undeclared function 'is_domain0'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
  540 |                 if (is_domain0(dev_get_pci_domain(dev))) {
      |                     ^
src/soc/intel/xeon_sp/uncore_acpi.c:546:2: error: indirection of non-volatile null pointer will be deleted, not trap [-Werror,-Wnull-dereference]
  546 |         assert(iommu0);
      |         ^~~~~~~~~~~~~~
src/include/assert.h:85:27: note: expanded from macro 'assert'
   85 | #define assert(statement)       ASSERT(statement)
      |                                 ^~~~~~~~~~~~~~~~~
src/include/assert.h:56:7: note: expanded from macro 'ASSERT'
   56 |         if (!__build_time_assert(x) && !(x)) {                          \
      |              ^~~~~~~~~~~~~~~~~~~~~~
src/include/assert.h:27:40: note: expanded from macro '__build_time_assert'
   27 |         (__builtin_constant_p(x) ? ((x) ? 1 : dead_code_t(int)) : 0)
      |                                               ^~~~~~~~~~~~~~~~
src/include/assert.h:105:2: note: expanded from macro 'dead_code_t'
  105 |         *(type *)(uintptr_t)0; \
      |         ^~~~~~~~~~~~~~~~~~~~~
src/soc/intel/xeon_sp/uncore_acpi.c:546:2: note: consider using __builtin_trap() or qualifying pointer with 'volatile'
src/include/assert.h:85:27: note: expanded from macro 'assert'
   85 | #define assert(statement)       ASSERT(statement)
      |                                 ^
src/include/assert.h:56:7: note: expanded from macro 'ASSERT'
   56 |         if (!__build_time_assert(x) && !(x)) {                          \
      |              ^
src/include/assert.h:27:40: note: expanded from macro '__build_time_assert'
   27 |         (__builtin_constant_p(x) ? ((x) ? 1 : dead_code_t(int)) : 0)
      |                                               ^
src/include/assert.h:105:2: note: expanded from macro 'dead_code_t'
  105 |         *(type *)(uintptr_t)0; \
      |         ^

Change-Id: If919d6fa578a82fbb6bc5e1fd2adf4e9f59cab95
Signed-off-by: Martin Roth <gaumless@gmail.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/81232
Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Reviewed-by: Matt DeVillier <matt.devillier@gmail.com>
Reviewed-by: Lean Sheng Tan <sheng.tan@9elements.com>
