Hi Ard,

On 1/12/22 12:16 PM, Ard Biesheuvel wrote:
On Wed, 12 Jan 2022 at 11:51, Ard Biesheuvel <ardb@kernel.org> wrote:
On Tue, 11 Jan 2022 at 17:16, <Pierre.Gondois@arm.com> wrote:
From: Pierre Gondois <Pierre.Gondois@arm.com>

Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=3742
V1: https://edk2.groups.io/g/devel/message/76990
V2:
- New patch: "DynamicTablesPkg: Print specifier macro for
  CM_OBJECT_ID" [Laszlo]
- Only add AcpiView for ArmVirtKvmTool instead of all ArmVirt
  platforms. This is done using a 'ACPIVIEW_ENABLE' switch.
  [Laszlo]
- Only generate ACPI tables for AARCH64. [Laszlo]
- Various modifications (error handling, patch organization,
  coding style, etc). [Laszlo]

The changes can be seen at: https://github.com/PierreARM/edk2/tree/1456_Add_ACPI_support_for_Kvmtool_v2

Kvmtool dynamically generates a device tree describing the platform
to boot on. Using the patch-sets listed below, the DynamicTables
framework generates ACPI tables describing a similar platform.

This patch-set:
 - adds a ConfigurationManager and make use of the DynamicTablesPkg
   in for Kvmtool for AARCH64, allowing to generate ACPI tables
 - adds the acpiview command line utility to the ArmVirtPkg
   platform that request if via the ACPIVIEW_ENABLE macro
 - update ArmVirtPkg.ci.yaml to add new words and use the
   DynamicTablesPkg
 - adds a print specifier macro for the CM_OBJECT_ID type

With this patchset, KvmTool on AARCH64 will use ACPI tables instead
of a Device Tree (cf PcdForceNoAcpi Pcd).

How did you test this? Can we boot Linux in ACPI mode with these changes?

I managed to run this with a recent kvmtool and a recent kernel
(v5.15+), which recognizes DBG2 serial port type 18.

I do see some errors in the log, though:

[    4.590652] No ACPI PMU IRQ for CPUn

(for each CPU)

and

ACPI: IORT: [Firmware Bug]: Root complex missing memory address limit
ACPI: \_SB_.PCI0.LNKA: _CRS 36 not found in _PRS
ACPI: \_SB_.PCI0.LNKA: No IRQ available. Try pci=noacpi or acpi=off

(for each virtio-pci device)

Yes effectively, a recent kernel handling 'ACPI_DBG2_16550_WITH_GAS' is required to boot.

About the error messages, I should have seen them. I will send a v3 handling them.

Regards,

Pierre