This issue is a summary of all the things that are needed to be able to boot in any non-standard machine platform, x86 or not.
This is mainly for me, to keep track of what is needed to be able to boot on more exotic platforms in the arm64 world (and later on risc-v).
We will need to add the following features:
Kernel support for parsing FDTs, to find PCIe root bridges' MMIO windows, configuring other platform devices, etc
Kernel support for configuring PCI devices (allocating and managing resources) as much as possible without the help of a firmware (#18250)
Kernel support for MSI and MSI-X interrupts. This is crucial for proper function of very modern hardware.
Kernel support for VirtIO devices that are not attached to the PCI bus. On many QEMU virtual machines (for arm64, but also on x86 microvm), the transport bus is simply an MMIO access.
UEFI support in the pre-kernel stage. UEFI is also usable on arm64 which is great for other arm64 platforms besides the Raspberry Pi target.
This will eliminate the need to support other boot protocols like Multiboot2, which in turn will keep the boot code more simple.
Better ACPI support, which means AML support in the Kernel. ACPI, like UEFI, is also usable on some arm64 platforms and can help us re-use ACPI code that was originally used on x86 for other CPU architectures as well.
Initramfs support. This feature is crucial to any new platform we will work on because it will make sure that even if we don't have a suitable hardware driver to read contents from a physical storage device, we can still make a progress on the new platform (#16855 currently as draft).