From: "Graeme Gregory (Linaro)" <graeme.gregory@linaro.org>
To: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: edk2-devel@lists.01.org, leif.lindholm@linaro.org,
masahisa.kojima@linaro.org
Subject: Re: [PATCH edk2-platforms v2 0/7] SynQuacer ACPI support
Date: Thu, 1 Mar 2018 11:23:27 +0000 [thread overview]
Message-ID: <20180301112327.GB1635@xora-monster> (raw)
In-Reply-To: <20180228192421.17684-1-ard.biesheuvel@linaro.org>
On Wed, Feb 28, 2018 at 07:24:14PM +0000, Ard Biesheuvel wrote:
> This implements ACPI support for the SynQuacer platforms.
>
> Changes since v1:
> - improve commit log (#1, #2)
> - replace bare numbers with symbolic constants (#2)
> - add Leif's R-b (#4)
> - add patches #6 and #7
>
> Note that supporting ACPI on this SoC is non-trivial, due to the quirky
> DesignWare RCs and the pre-ITS that sits between the PCIe RCs and the GICv3.
> However, the most important issue has been addressed by modifying the static
> SMMU mapping that sits between the CPUs and the PCIe config space, working
> around the ghosting issue that occurs on these RCs, due the complete lack of
> type 0 config TLP filtering by the [non-existent] root port. (This was tested
> using the 20180226-LB1.1-ACPI-ramfw.bin SCP firmware image, which is not [yet]
> installed by default on DeveloperBox hardware)
>
> That leaves the MSI issue, which is worked around by limiting MSI support to a
> single RC. In the presented configuration, this is RC #1, which connects to the
> x16 slot [and nothing else] on the DeveloperBox PCB. The onboard PCIe devices
> (XHCI + SATA) work without problem using wired interrupts only, and so RC #0
> has MSI support disabled. This means cards that require MSI support should
> be inserted into the x16 slot, which is likely to be the preferred slot in
> such cases anwyay (e.g., when using NVME or high end networking plugin cards)
>
> Patch #1 fixes a minor issue in the slot-to-BDF mapping.
>
> Patch #2 modifies the static PCIe window configuration so it can be described
> using ACPI as well as DT.
>
> Patch #3 introduces the static ACPI tables that describe the fixed platform
> devices and peripherals to the OS.
>
> Patch #4 adds a menu option to the platform driver to make ACPI vs DT user
> selectable.
>
> Patch #5 adds support for describing the eMMC controller using a SSDT table
> which is only installed if eMMC support is enabled.
>
> Patch #6 adds a _STA method implementation to the PCIe RC devices so that
> they are only exposed to the OS when running on a platform that has one of
> the several ECAM workarounds enabled. Otherwise, we can still boot via ACPI
> using platform devices, but the PCIe RCs are unavailable.
>
> Patch #7 extends the _STA method for PCI0 to take the presence detect GPIO
> into account. This is necessary because on the SynQuacer evaluation board,
> any attempt to access the device registers will lock up the system if no
> card is inserted into the slot.
>
> Note that driver support for the eMMC and network controller only landed in
> v4.15, but when using a SATA driver and a plugin network card that does have
> driver support, these patches should allow the SynQuacer based platforms to
> boot stock Debian Stretch/Fedora/Centos etc installers.
>
The ACPI parts look good to me.
Reviewed-by: Graeme Gregory <graeme.gregory@linaro.org>
> Ard Biesheuvel (7):
> Platform/Socionext/DeveloperBox: fix PCIe slot to B/D/F mapping
> Silicon/SynQuacer: tweak PCI I/O windows for ACPI/Linux support
> Silicon/SynQuacer: add ACPI drivers and tables
> Silicon/SynQuacer/PlatformDxe: add option to enable ACPI mode
> Silicon/SynQuacer/PlatformDxe: add ACPI description of eMMC
> Silicon/SynQuacer/AcpiTables: disable PCI RCs if ECAM ghosts are
> detected
> Silicon/SynQuacer/AcpiTables: take presence detect of PCI0 into
> account
>
> Platform/Socionext/DeveloperBox/DeveloperBox.dsc | 2 +
> Platform/Socionext/DeveloperBox/DeveloperBox.fdf | 14 +
> Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.dsc | 2 +
> Platform/Socionext/SynQuacerEvalBoard/SynQuacerEvalBoard.fdf | 14 +
> Silicon/Socionext/SynQuacer/Acpi.dsc.inc | 48 +++
> Silicon/Socionext/SynQuacer/AcpiTables/AcpiSsdtRootPci.asl | 317 ++++++++++++++++++++
> Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.h | 73 +++++
> Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf | 65 ++++
> Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl | 187 ++++++++++++
> Silicon/Socionext/SynQuacer/AcpiTables/Fadt.aslc | 91 ++++++
> Silicon/Socionext/SynQuacer/AcpiTables/Gtdt.aslc | 93 ++++++
> Silicon/Socionext/SynQuacer/AcpiTables/Iort.aslc | 101 +++++++
> Silicon/Socionext/SynQuacer/AcpiTables/Madt.aslc | 182 +++++++++++
> Silicon/Socionext/SynQuacer/AcpiTables/Mcfg.aslc | 63 ++++
> Silicon/Socionext/SynQuacer/AcpiTables/Spcr.aslc | 128 ++++++++
> Silicon/Socionext/SynQuacer/DeviceTree/SynQuacer.dtsi | 2 +-
> Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/Emmc.asl | 41 +++
> Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/Emmc.c | 55 ++++
> Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.c | 32 +-
> Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.h | 4 +
> Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxe.inf | 5 +
> Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxeHii.uni | 8 +-
> Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/PlatformDxeHii.vfr | 10 +-
> Silicon/Socionext/SynQuacer/Include/Platform/Pcie.h | 22 +-
> Silicon/Socionext/SynQuacer/Include/Platform/VarStore.h | 8 +-
> Silicon/Socionext/SynQuacer/Library/SynQuacerPciHostBridgeLib/SynQuacerPciHostBridgeLibConstructor.c | 4 +-
> 26 files changed, 1546 insertions(+), 25 deletions(-)
> create mode 100644 Silicon/Socionext/SynQuacer/Acpi.dsc.inc
> create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/AcpiSsdtRootPci.asl
> create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.h
> create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/AcpiTables.inf
> create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Dsdt.asl
> create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Fadt.aslc
> create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Gtdt.aslc
> create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Iort.aslc
> create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Madt.aslc
> create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Mcfg.aslc
> create mode 100644 Silicon/Socionext/SynQuacer/AcpiTables/Spcr.aslc
> create mode 100644 Silicon/Socionext/SynQuacer/Drivers/PlatformDxe/Emmc.asl
>
> --
> 2.11.0
>
next prev parent reply other threads:[~2018-03-01 11:17 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-28 19:24 [PATCH edk2-platforms v2 0/7] SynQuacer ACPI support Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 1/7] Platform/Socionext/DeveloperBox: fix PCIe slot to B/D/F mapping Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 2/7] Silicon/SynQuacer: tweak PCI I/O windows for ACPI/Linux support Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 3/7] Silicon/SynQuacer: add ACPI drivers and tables Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 4/7] Silicon/SynQuacer/PlatformDxe: add option to enable ACPI mode Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 5/7] Silicon/SynQuacer/PlatformDxe: add ACPI description of eMMC Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 6/7] Silicon/SynQuacer/AcpiTables: disable PCI RCs if ECAM ghosts are detected Ard Biesheuvel
2018-02-28 19:24 ` [PATCH edk2-platforms v2 7/7] Silicon/SynQuacer/AcpiTables: take presence detect of PCI0 into account Ard Biesheuvel
2018-02-28 20:21 ` [PATCH edk2-platforms v2 0/7] SynQuacer ACPI support Leif Lindholm
2018-03-01 11:23 ` Graeme Gregory (Linaro) [this message]
2018-03-01 11:24 ` Ard Biesheuvel
2018-03-15 16:06 ` Ard Biesheuvel
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180301112327.GB1635@xora-monster \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox