Home | History | Annotate | Download | only in acpi
History log of /src/sys/arch/arm/acpi/acpi_platform.c
RevisionDateAuthorComments
 1.39  06-Sep-2025  thorpej Refactor the "platform" defitions into fdt_platform.h
 1.38  08-Dec-2024  jmcneill acpi: Try PSCI before UEFI RT for shutdown/reset.

BSA says that an OS can use either UEFI RT or PSCI, and that the RT
implementation should just call PSCI.

Given the amount of implementation issues with UEFI RT, let's try PSCI
first, because it's nice to be able to reboot and poweroff even with
buggy firmware.
 1.37  30-Jun-2024  jmcneill aarch64: Add NUMA awareness for ACPI systems with SRAT tables.

On an Ampere Altra w/ hemisphere mode enabled:

[ 1.0000000] cpu0: package 16, core 0, smt 0, numa 0
[...]
[ 1.0000000] cpu32: package 22, core 0, smt 0, numa 1

[ 1.000004] SRAT: 2 NUMA nodes
[ 1.000004] SRAT: node 0 memory range 0 (0x88300000 - 0x88400000 flags 1)
[ 1.000004] SRAT: node 0 memory range 1 (0x90000000 - 0x100000000 flags 1)
[ 1.000004] SRAT: node 0 memory range 2 (0x80000000000 - 0x80080000000 flags 1)
[ 1.000004] SRAT: node 0 memory range 3 (0x80100000000 - 0x81000000000 flags 1)
[ 1.000004] SRAT: node 1 memory range 0 (0xc0000000000 - 0xc1000000000 flags 1)
 1.36  07-Apr-2023  skrll branches: 1.36.6;
Rename ARM_PLATFORM to FDT_PLATFORM and make it available outside arm.
 1.35  24-Jan-2023  mlelstv Add support for FIFOs and hardware flow-control to plcom driver.
Add a PLCOM_TYPE_GENERIC_UART variant to match SBSA requirements.
 1.34  16-Nov-2022  skrll typo in comment
 1.33  06-Sep-2022  skrll Use the ACPICA define ACPI_DBG2_16550_WITH_GAS
 1.32  24-Oct-2021  jmcneill More SPCR cleanup:

- For 16550 style UARTs, always honour GAS if BitWidth != 0
- Use BitWidth instead of AccessWidth to determine register stride
- For baud rate ID of 0, assume 115200 until we have a way of probing
the baud rate configured by firmware.
 1.31  23-Oct-2021  jmcneill It seems that there are three 16550 types for SPCR:

- 0x0000: Fully 16550-compatible (1-byte I/O)
- 0x0001: 16550 subset compatible with DBGP Revision 1 (4-byte MMIO)
- 0x0012: 16550-compatible with parameters defined in GAS

So assume reg_width for types 0 and 1, and only look at GAS for type 12h.
 1.30  21-Oct-2021  jmcneill baud_rate is signed now
 1.29  20-Oct-2021  jakllsch SPCR_BAUD_DEFAULT maps better to -1 than 0

Suggested by jmcneill@
 1.28  07-Aug-2021  jmcneill acpi: call smccc_probe() after PSCI init
 1.27  06-Aug-2021  jmcneill Arm: Add support for SMC Calling Convention

Arm DEN0028 defines a calling mechanism used with Secure Monitor Call (SMC)
and Hypervisor Call (HVC) instructions. To discover SMCCC, we must:

1) Find the PSCI conduit (either via ACPI FADT, or Device Tree)
2) Use PSCI_VERSION to determine whether PSCI_FEATURES is supported
3) Call PSCI_FEATURES with SMCCC_VERSION to determine the implementation
version.
 1.26  12-May-2021  thorpej - Define a device call for PCI bus instances to fetch a direct child's
device handle given the device's device/function #s (extracted from
a pcitag_t). Use it to associate the handle with the child device
at config_found() time.
- Implement this device call for ACPI and OpenFirmware.
- Enable the OpenFirmware variant for evbarm FDT, macppc, ofppc, sparc64.
- Obsolete acpi_device_register(); it is no longer needed.
- Obsolete setting the OpenFirmware handle in PCI devices in the
sparc64 device_register(); it is no longer needed.
 1.25  24-Apr-2021  thorpej branches: 1.25.2; 1.25.4;
Merge thorpej-cfargs branch:

Simplify and make extensible the config_search() / config_found() /
config_attach() interfaces: rather than having different variants for
which arguments you want pass along, just have a single call that
takes a variadic list of tag-value arguments.

Adjust all call sites:
- Simplify wherever possible; don't pass along arguments that aren't
actually needed.
- Don't be explicit about what interface attribute is attaching if
the device only has one. (More simplification.)
- Add a config_probe() function to be used in indirect configuiration
situations, making is visibly easier to see when indirect config is
in play, and allowing for future change in semantics. (As of now,
this is just a wrapper around config_match(), but that is an
implementation detail.)

Remove unnecessary or redundant interface attributes where they're not
needed.

There are currently 5 "cfargs" defined:
- CFARG_SUBMATCH (submatch function for direct config)
- CFARG_SEARCH (search function for indirect config)
- CFARG_IATTR (interface attribte)
- CFARG_LOCATORS (locators array)
- CFARG_DEVHANDLE (devhandle_t - wraps OFW, ACPI, etc. handles)

...and a sentinel value CFARG_EOL.

Add some extra sanity checking to ensure that interface attributes
aren't ambiguous.

Use CFARG_DEVHANDLE in MI FDT, OFW, and ACPI code, and macppc and shark
ports to associate those device handles with device_t instance. This
will trickle trough to more places over time (need back-end for pre-OFW
Sun OBP; any others?).
 1.24  12-Feb-2021  jmcneill branches: 1.24.2;
Reset serial terminal to default state at boot.

UEFI may leave the serial console in an undesireable state (incorrect
foreground and background colour, etc) when exiting. Send ANSI escape
sequences when setting up the early console attachments to turn off
character attributes and erase from the cursor to the end of the screen.
 1.23  04-Feb-2021  thorpej Call acpi_device_register() / fdtbus_device_register() as approrpriate.
 1.22  06-Dec-2020  jmcneill acpi: Cleanup SPCR setup and style fixes.
 1.21  10-Oct-2020  jmcneill branches: 1.21.2;
Support early FB console attachment when booting with a devicetree
(non-ACPI mode). Inform the pciconf code about the framebuffer to
prevent pciconf from changing resources out from under us when framebuffer
memory is in VRAM.
 1.20  28-Sep-2020  jmcneill Get rid of a4x bus_space tag from fdtbus_attach_args. The only consumer
of this was various com(4) glue so modify all of that to use the new
com_init_regs_stride instead.
 1.19  13-Sep-2020  jmcneill Make Arm MD ACPI code big endian friendly.
 1.18  22-Sep-2019  jmcneill Use vcons for simplefb preattach to speed up early console messages.
 1.17  19-Aug-2019  jmcneill Use a unique name for the acpi ARM_PLATFORM definition
 1.16  02-Aug-2019  jmcneill Ignore AccessWidth (PL011 and SBSA console always needs 32-bit access)
 1.15  24-Jul-2019  jmcneill branches: 1.15.2;
Add early fb console support
 1.14  22-Jun-2019  jmcneill Finish the job
 1.13  19-Jun-2019  jmcneill Provide a 64-bit dma tag and use a coherent tag unless CCA=0
 1.12  23-May-2019  ryo branches: 1.12.2;
fix build without options MULTIPROCESSOR
 1.11  21-Dec-2018  jmcneill Use SPCR to force console selection for com@acpi. This is needed because
we may use a non-standard bus_space tag (a4x) to attach the console early,
which breaks com_is_console.
 1.10  28-Nov-2018  jmcneill Force a matching com@puc by seg/bus/dev/func to be the console device if specified in SPCR
 1.9  28-Nov-2018  jmcneill Replace SPCR_INTERFACE_TYPE_* defines with ACPI_DBG2_* from acpica. Suggested by msaitoh@
 1.8  27-Nov-2018  jmcneill Add support for SPCR 16550 and 16450 interface types
 1.7  24-Nov-2018  rjs Allow building when plcom isn't used.
 1.6  30-Oct-2018  skrll Retire fdt_putchar and ap_early_put_char in favour of uartputc.
 1.5  28-Oct-2018  jmcneill Add support for EFI runtime services on aarch64.
 1.4  19-Oct-2018  jmcneill branches: 1.4.2;
Fix BCM2835 console support.
 1.3  15-Oct-2018  jmcneill Handle more plcom-style console types
 1.2  13-Oct-2018  jmcneill Don't rely on PSCI node in FDT to reboot
 1.1  12-Oct-2018  jmcneill Add ACPI platform glue and basic device drivers (CPU, GIC, Generic Timer,
SBSA UART).
 1.4.2.4  26-Dec-2018  pgoyette Sync with HEAD, resolve a few conflicts
 1.4.2.3  26-Nov-2018  pgoyette Sync with HEAD, resolve a couple of conflicts
 1.4.2.2  20-Oct-2018  pgoyette Sync with head
 1.4.2.1  19-Oct-2018  pgoyette file acpi_platform.c was added on branch pgoyette-compat on 2018-10-20 06:58:24 +0000
 1.12.2.3  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411
 1.12.2.2  10-Jun-2019  christos Sync with HEAD
 1.12.2.1  23-May-2019  christos file acpi_platform.c was added on branch phil-wifi on 2019-06-10 22:05:50 +0000
 1.15.2.2  23-Sep-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #231):

sys/arch/arm/acpi/acpi_platform.c: revision 1.18
sys/arch/arm/acpi/files.acpi: revision 1.7
sys/arch/arm/acpi/acpi_simplefb.c: revision 1.1
sys/arch/arm/acpi/acpi_simplefb.h: revision 1.1

Use vcons for simplefb preattach to speed up early console messages.
 1.15.2.1  04-Aug-2019  martin Pull up following revision(s) (requested by jmcneill in ticket #17):

sys/arch/arm/acpi/acpi_platform.c: revision 1.16

Ignore AccessWidth (PL011 and SBSA console always needs 32-bit access)
 1.21.2.2  03-Apr-2021  thorpej Sync with HEAD.
 1.21.2.1  14-Dec-2020  thorpej Sync w/ HEAD.
 1.24.2.1  03-Apr-2021  thorpej - FDT device enumeration now sets the device handle using CFARG_DEVHANDLE.
- fdtbus_device_register() is now obsolete, so G/C it.
- of_device_register() is now obsolete, so G/C it.
 1.25.4.1  31-May-2021  cjep sync with head
 1.25.2.1  13-May-2021  thorpej Sync with HEAD.
 1.36.6.2  02-Aug-2025  perseant Sync with HEAD
 1.36.6.1  01-Jul-2024  perseant Sync with HEAD.

RSS XML Feed