blob: 4afd6c3a87033bc58a41ed6f4b7c6fd6629935f9 [file] [log] [blame]
Patrick Williamsb58112e2024-03-07 11:16:36 -06001#@TYPE: Machine
2#@NAME: genericarm64
Patrick Williams03514f12024-04-05 07:04:11 -05003#@DESCRIPTION: Generic Arm64 machine for typical SystemReady IR/ES platforms, which
Patrick Williamsb58112e2024-03-07 11:16:36 -06004#have working firmware and boot via EFI.
5
6require conf/machine/include/arm/arch-armv8a.inc
7
8# Arm Base System Architecture says v8.0+ is allowed, but FEAT_CRC32 is required
9DEFAULTTUNE = "armv8a-crc"
10
11MACHINE_FEATURES = "acpi alsa bluetooth efi keyboard pci qemu-usermode rtc screen usbhost vfat wifi"
12
Patrick Williamsb58112e2024-03-07 11:16:36 -060013KERNEL_IMAGETYPE = "Image"
14PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
15
Patrick Williams03514f12024-04-05 07:04:11 -050016# Install all the kernel modules into the rootfs
17MACHINE_EXTRA_RRECOMMENDS += "kernel-modules"
18# Install selected pieces of firmware
19MACHINE_EXTRA_RRECOMMENDS += "linux-firmware-wl12xx linux-firmware-wl18xx linux-firmware-rtl-nic"
20
21# Use an initramfs and populate it with the kernel modules and key firmware
Patrick Williamsb58112e2024-03-07 11:16:36 -060022INITRAMFS_IMAGE ?= "core-image-initramfs-boot"
Patrick Williams03514f12024-04-05 07:04:11 -050023PACKAGE_INSTALL:append:pn-core-image-initramfs-boot = " ${MACHINE_EXTRA_RRECOMMENDS}"
Patrick Williamsb58112e2024-03-07 11:16:36 -060024
25IMAGE_FSTYPES ?= "wic"
26WKS_FILE ?= "genericarm64.wks.in"
27
28EFI_PROVIDER ?= "${@bb.utils.contains("DISTRO_FEATURES", "systemd", "systemd-boot", "grub-efi", d)}"
29
30# Try to bring up one physical serial console, or a virtualized serial console
31SERIAL_CONSOLES ?= "115200;ttyAMA0 115200;hvc0"
Patrick Williams03514f12024-04-05 07:04:11 -050032
33# Allow u-boot to be built for use with qemu-system-aarch64.
34# This u-boot is _not_ suitable for use with real hardware, and the expectation
35# of this machine is that real hardware comes with the firmware pre-loaded.
36UBOOT_MACHINE = "qemu_arm64_defconfig"
37
38# runqemu configuration to run a genericarm64 image inside a qemu-system-aarch64. You will need
39# to build u-boot explicitly.
40IMAGE_CLASSES += "qemuboot"
41QB_SYSTEM_NAME = "qemu-system-aarch64"
42# Boot the virtual machine with either an emulated Cortex-A76, or the host if using KVM
43QB_MACHINE = "-machine virt"
44QB_CPU = "-cpu cortex-a76"
45QB_CPU_KVM = "-cpu host -machine gic-version=3"
46QB_SMP = "-smp 4"
47# Boot into U-Boot and let that scan the disk for the next step, don't pass any kernel or filesystem hints
48QB_DEFAULT_BIOS = "u-boot.bin"
49QB_DEFAULT_KERNEL = "none"
50QB_DEFAULT_FSTYPE = "wic"
51QB_FSINFO = "wic:no-kernel-in-fs"
52# Mount the wic rootfs as a virtio block device
53QB_ROOTFS_OPT = "-drive id=root,file=@ROOTFS@,if=none,format=raw -device virtio-blk-pci,drive=root"
54# Virtio serial consoles
55QB_SERIAL_OPT = "-device virtio-serial-pci -chardev null,id=virtcon -device virtconsole,chardev=virtcon"
56QB_TCPSERIAL_OPT = "-device virtio-serial-pci -chardev socket,id=virtcon,port=@PORT@,host=127.0.0.1,nodelay=on -device virtconsole,chardev=virtcon"
57# Virtio networking
58QB_TAP_OPT = "-netdev tap,id=net0,ifname=@TAP@,script=no,downscript=no"