From 307a0efbef42678f5ec87321cc967a05612d82b7 Mon Sep 17 00:00:00 2001 From: Lean Sheng Tan Date: Fri, 15 Mar 2024 14:18:53 +0100 Subject: meta-evb: meta-evb-arm: Add new board FVP Base Board This layer contains a reference implementation of OpenBMC for Armv-A Base RevC AEM FVP. Tested: - Build success - booted to bmc kernel shell Change-Id: Ie1b100a78232fb986377e3b58d637b97bbf64f42 Signed-off-by: Lean Sheng Tan --- meta-evb/meta-evb-arm/meta-evb-fvp-base/README.md | 62 +++++++ .../meta-evb-arm/meta-evb-fvp-base/conf/layer.conf | 11 ++ .../meta-evb-fvp-base/conf/machine/fvp-config.inc | 46 +++++ .../meta-evb-fvp-base/conf/machine/fvp.conf | 51 ++++++ .../conf/templates/default/bblayers.conf.sample | 20 +++ .../conf/templates/default/conf-notes.txt | 2 + .../conf/templates/default/local.conf.sample | 20 +++ .../trusted-firmware-a_%.bbappend | 6 + .../recipes-bsp/u-boot/files/fvp.cfg | 30 ++++ .../recipes-bsp/u-boot/files/fvp.env | 20 +++ .../recipes-bsp/u-boot/u-boot_%.bbappend | 9 + .../recipes-kernel/linux/linux-yocto/defconfig | 191 +++++++++++++++++++++ .../recipes-kernel/linux/linux-yocto_%.bbappend | 7 + .../packagegroups/packagegroup-fvp-apps.bb | 39 +++++ .../recipes-phosphor/pldm/files/host_eid | 1 + .../recipes-phosphor/pldm/pldm_%.bbappend | 12 ++ .../meta-evb-fvp-base/wic/emmc-fvp.wks.in | 30 ++++ 17 files changed, 557 insertions(+) create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/README.md create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/layer.conf create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/machine/fvp-config.inc create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/machine/fvp.conf create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/templates/default/bblayers.conf.sample create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/templates/default/conf-notes.txt create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/templates/default/local.conf.sample create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/u-boot/files/fvp.cfg create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/u-boot/files/fvp.env create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/u-boot/u-boot_%.bbappend create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-kernel/linux/linux-yocto/defconfig create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-kernel/linux/linux-yocto_%.bbappend create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-phosphor/packagegroups/packagegroup-fvp-apps.bb create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-phosphor/pldm/files/host_eid create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-phosphor/pldm/pldm_%.bbappend create mode 100644 meta-evb/meta-evb-arm/meta-evb-fvp-base/wic/emmc-fvp.wks.in diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/README.md b/meta-evb/meta-evb-arm/meta-evb-fvp-base/README.md new file mode 100644 index 0000000000..135e1a05cd --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/README.md @@ -0,0 +1,62 @@ +# meta-fvp-base + +This layer contains a reference implementation of OpenBMC for Armv-A Base RevC AEM FVP. + +The image can be used for the following demonstration setup +where the Base FVP represents the management controller which is communicating +with the Manageability Control Processor (MCP) over PLDM over MCTP over UART. + +## Diagram + +``` + AP debug console + | ++---------------------+ +| Neoverse RD-N2 FVP | +| | PLDM over ++-----+ +-------+ MCTP over +--------------------------+ +| SCP | | MCP | (terminal_0) ------- UART ----- (terminal_1)| /dev/ttyAMA1 Base FVP |--- redfish ++-----+-------+-------+ +--------------------------+ + | | | + | debug console FVP debug console + | (terminal_uart_mcp) (terminal_0) +debug console +(terminal_uart_scp) +``` + +## Features + +- The MCP exposes a temperature sensor which our image then exposes over redfish + - pldmd should automatically pick up this sensor and expose it on dbus +- The MCP has a PLDM Event which can be retrieved by pldmd upon using ```pldm event``` command from MCP debug console + +## Usage + +1. Start Base FVP with OpenBMC Image + - ```./meta-arm/scripts/runfvp build/fvp/tmp/deploy/images/fvp/obmc-phosphor-image-fvp.fvpconf``` + - The serial /dev/ttyAMA1 will be automatically configured + - pldmd will find ```/usr/share/pldm/host_eid``` which is hardcoded as 18 + - pldmd will start communicating with the MCP once it's ready +2. Start Neoverse RD-N2 FVP + - Can observe SCP FW logs on MCP debug console + - Can enter MCP Debug Prompt by pressing Ctrl+e on MCP debug console +3. Connect the UART's of MCP to Base FVP with + ```socat -x tcp:localhost:6005 tcp:localhost:5065``` + - The port numbers are just examples, they can be hardcoded in fvp config, otherwise the fvp's will assign them dynamically + - ```-x``` tells socat to print the bytes being transferred +4. Query Redfish Sensor and Event + - ```curl --insecure -u root:0penBmc -X GET https://127.0.0.1:4223/redfish/v1/Chassis/PLDM_Device_1/Thermal``` + - ```curl --insecure -u root:0penBmc -X GET https://127.0.0.1:4223/redfish/v1/Systems/system/LogServices/PldmEvent/Entries/``` + +## Known Issues +- Because both FVP are running independently, there can be an issue with timeout. + That's why a large timeout was configured for pldmd. + +## References + +- SCP FW for MCP https://gitlab.arm.com/firmware/SCP-firmware +- Base FVP Download https://developer.arm.com/Tools%20and%20Software/Fixed%20Virtual%20Platforms +- Neoverse FVP Download https://developer.arm.com/downloads/-/arm-ecosystem-fvps +- PLDM + MCTP Specifications https://www.dmtf.org/standards/pmci +- Neoverse System Architecture https://developer.arm.com/documentation/102759/relc/Hardware-and-topology/System-architecture?lang=en +- Other FVP SW Docs https://gitlab.arm.com/arm-reference-solutions/arm-reference-solutions-docs/ diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/layer.conf b/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/layer.conf new file mode 100644 index 0000000000..07b6e3685b --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/layer.conf @@ -0,0 +1,11 @@ +BBPATH .= ":${LAYERDIR}" + +BBFILES += "\ +${LAYERDIR}/recipes-*/*/*.bb \ +${LAYERDIR}/recipes-*/*/*.bbappend \ +" + +BBFILE_COLLECTIONS += "evb-fvp-base" +BBFILE_PATTERN_evb-fvp-base = "^${LAYERDIR}/" +BBFILE_PRIORITY_evb-fvp-base = "6" +LAYERSERIES_COMPAT_evb-fvp-base = " nanbield scarthgap" diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/machine/fvp-config.inc b/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/machine/fvp-config.inc new file mode 100644 index 0000000000..c0c22dc573 --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/machine/fvp-config.inc @@ -0,0 +1,46 @@ +# Armv8-A Base Platform FVP Specific Parameters + +FVP_PROVIDER ?= "fvp-base-a-aem-native" +FVP_EXE ?= "FVP_Base_RevC-2xAEMvA" + +# Network +FVP_CONFIG[bp.hostbridge.interfaceName]="enp97s0" +FVP_CONFIG[bp.hostbridge.userNetworking]="1" + +# Ethernet controller +FVP_CONFIG[bp.smsc_91c111.enabled] = "1" + +# Disable dc4 device for uart1 +FVP_CONFIG[bp.pl011_uart1.enable_dc4] = "0" + +# Set the baseline to ARMv8.4, as the default is 8.0. +FVP_CONFIG[cluster0.has_arm_v8-4] = "1" +FVP_CONFIG[cluster1.has_arm_v8-4] = "1" + +# FVP Terminal/console outpot settings +FVP_CONFIG[bp.hostbridge.userNetPorts] = "4222=22,4223=443,4224=80" +FVP_CONSOLES[default] = "terminal_0" +FVP_TERMINALS[bp.terminal_0] ?= "Console" +FVP_TERMINALS[bp.terminal_1] ?= "" +FVP_TERMINALS[bp.terminal_2] ?= "" +FVP_TERMINALS[bp.terminal_3] ?= "" +# user can update ports as needed +FVP_CONFIG[bp.terminal_0.start_port] = "5064" +FVP_CONFIG[bp.terminal_1.start_port] = "5065" +FVP_CONFIG[bp.terminal_2.start_port] = "5066" +FVP_CONFIG[bp.terminal_3.start_port] = "5067" + +# FIP image settings +# fip images can be inspected with 'fiptool' from TF-A +FVP_CONFIG[bp.secureflashloader.fname] = "bl1-fvp.bin" +FVP_CONFIG[bp.flashloader0.fname] = "fip-fvp.bin" +# enable randomness which is needed for various security related applications +FVP_CONFIG[bp.virtio_rng.enabled] = "1" +FVP_CONFIG[bp.virtio_rng.diagnostics] = "1" +FVP_CONFIG[cache_state_modelled] ?= "0" + +# Enable MMC support +FVP_CONFIG[bp.mmc.p_mmc_file]="obmc-phosphor-image-fvp.wic" +# use pad instead of silently truncate emmc image +FVP_CONFIG[bp.mmc.support_unpadded_images]="1" +FVP_CONFIG[bp.mmc.diagnostics]="0x1" diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/machine/fvp.conf b/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/machine/fvp.conf new file mode 100644 index 0000000000..1a65c6f5ec --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/machine/fvp.conf @@ -0,0 +1,51 @@ +#@TYPE: Machine +#@NAME: Armv8-A Base Platform FVP machine +#@DESCRIPTION: Machine configuration for Armv8-A Base Platform FVP model + +include fvp-config.inc + +require conf/distro/include/phosphor-mmc.inc +require conf/machine/include/arm/arch-armv8-4a.inc +require conf/distro/include/pldm.inc +require conf/machine/include/obmc-evb-common.inc +require conf/machine/include/obmc-bsp-common.inc + +INHERIT += "fvpboot" + +IMAGE_FSTYPES = "wic" +WKS_FILE = "emmc-fvp.wks.in" +IMAGE_BOOT_FILES = "fitImage-fvp.bin;fitImage" + +SERIAL_CONSOLES = "115200;ttyAMA0" + +PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto" +KERNEL_DEVICETREE = "arm/fvp-base-revc.dtb" +KERNEL_IMAGETYPE = "fitImage" + +EXTRA_IMAGEDEPENDS += "trusted-firmware-a" + +UBOOT_MACHINE = "vexpress_fvp_defconfig" + +EXTRA_IMAGEDEPENDS += "u-boot" + +FIT_ADDRESS_CELLS = "2" +UBOOT_LOADADDRESS = "0xa0000000" +UBOOT_ENTRYPOINT = "0xa0000000" + +INITRAMFS_IMGAGE = "core-image-minimal-initramfs" +INITRAMFS_IMAGE_BUNDLE = "1" + +IMAGE_INSTALL:append = "\ + ssh-pregen-hostkeys \ + pldm \ +" + +PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-fvp-apps" +PREFERRED_PROVIDER_virtual/obmc-fan-mgmt = "packagegroup-fvp-apps" +PREFERRED_PROVIDER_virtual/obmc-flash-mgmt = "packagegroup-fvp-apps" +PREFERRED_PROVIDER_virtual/obmc-system-mgmt = "packagegroup-fvp-apps" +PREFERRED_PROVIDER_virtual/obmc-inventory-data = "packagegroup-fvp-apps" +PREFERRED_PROVIDER_virtual/obmc-user-mgmt = "packagegroup-fvp-apps" + +# Disable "time jumped backwards" error as FVP could be out of sync with real time due to slower simulation +PACKAGECONFIG:remove:pn-systemd = "timesyncd" diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/templates/default/bblayers.conf.sample b/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/templates/default/bblayers.conf.sample new file mode 100644 index 0000000000..b150ecb7cd --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/templates/default/bblayers.conf.sample @@ -0,0 +1,20 @@ +# LAYER_CONF_VERSION is increased each time build/conf/bblayers.conf +# changes incompatibly +LCONF_VERSION = "8" + +BBPATH = "${TOPDIR}" +BBFILES ?= "" + +BBLAYERS ?= " \ + ##OEROOT##/meta \ + ##OEROOT##/meta-openembedded/meta-oe \ + ##OEROOT##/meta-openembedded/meta-networking \ + ##OEROOT##/meta-openembedded/meta-python \ + ##OEROOT##/meta-phosphor \ + ##OEROOT##/meta-arm/meta-arm \ + ##OEROOT##/meta-arm/meta-arm-toolchain \ + ##OEROOT##/meta-arm/meta-arm-bsp \ + ##OEROOT##/meta-evb \ + ##OEROOT##/meta-evb/meta-evb-arm/meta-evb-fvp-base \ +" + diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/templates/default/conf-notes.txt b/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/templates/default/conf-notes.txt new file mode 100644 index 0000000000..43d4ab099d --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/templates/default/conf-notes.txt @@ -0,0 +1,2 @@ +Common targets are: + obmc-phosphor-image diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/templates/default/local.conf.sample b/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/templates/default/local.conf.sample new file mode 100644 index 0000000000..33c5d1164e --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/conf/templates/default/local.conf.sample @@ -0,0 +1,20 @@ +MACHINE ??= "evb-fvp-base" +DISTRO ?= "openbmc-phosphor" +PACKAGE_CLASSES ?= "package_ipk" +SANITY_TESTED_DISTROS:append ?= " *" +EXTRA_IMAGE_FEATURES = "debug-tweaks" +USER_CLASSES ?= "buildstats" +PATCHRESOLVE = "noop" +BB_DISKMON_DIRS = "\ + STOPTASKS,${TMPDIR},1G,100K \ + STOPTASKS,${DL_DIR},1G,100K \ + STOPTASKS,${SSTATE_DIR},1G,100K \ + STOPTASKS,/tmp,100M,100K \ + HALT,${TMPDIR},100M,1K \ + HALT,${DL_DIR},100M,1K \ + HALT,${SSTATE_DIR},100M,1K \ + HALT,/tmp,10M,1K" +CONF_VERSION = "2" + +LICENSE_FLAGS_ACCEPTED = "Arm-FVP-EULA" + diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend new file mode 100644 index 0000000000..42111843f4 --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/trusted-firmware-a/trusted-firmware-a_%.bbappend @@ -0,0 +1,6 @@ +COMPATIBLE_MACHINE = "fvp" +TFA_TARGET_PLATFORM = "fvp" +TFA_PLATFORM_IS_FVP = "TRUE" +TFA_PLATFORM = "fvp" +TFA_UBOOT = "1" +TFA_BUILD_TARGET = "bl1 bl2 bl31 dtbs fip" diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/u-boot/files/fvp.cfg b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/u-boot/files/fvp.cfg new file mode 100644 index 0000000000..9cd1815fb7 --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/u-boot/files/fvp.cfg @@ -0,0 +1,30 @@ +CONFIG_USE_BOOTARGS=y +CONFIG_FVP=y +CONFIG_SYS_BOOTM_LEN=0x6000000 # increase buffer size for decompression + +# Enable A/B boot scheme & MMC support +CONFIG_USE_DEFAULT_ENV_FILE=y +CONFIG_DEFAULT_ENV_FILE="../fvp.env" + +# Enable FIT support +CONFIG_FIT=y +CONFIG_FIT_FULL_CHECK=y +CONFIG_TOOLS_FIT_FULL_CHECK=y +CONFIG_FIT_SIGNATURE=n +CONFIG_FIT_CIPHER=y +CONFIG_FIT_VERBOSE=n +CONFIG_FIT_PRINT=n + +# Hash support for FIT image +CONFIG_SHA256=y +CONFIG_TOOLS_SHA256=y +CONFIG_CMD_HASH=y +CONFIG_HASH=y +CONFIG_HASH_VERIFY=y + +# MMC configs +CONFIG_MMC=y +CONFIG_DM_MMC=y +CONFIG_ARM_PL180_MMCI=y +CONFIG_DM_GPIO=y # should be dependency of ARM_PL180_MMCI +CONFIG_CMD_MMC=y diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/u-boot/files/fvp.env b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/u-boot/files/fvp.env new file mode 100644 index 0000000000..946e08a8d3 --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/u-boot/files/fvp.env @@ -0,0 +1,20 @@ +# variables +bootargs=console=ttyAMA0 earlycon=pl011,0x1c090000 loglevel=9 rootwait root=PARTLABEL=rofs-a +bootside=a +loadaddr=0x90000000 + +# runnable variables in order of execution (for readability) +bootcmd=setenv origbootargs ${bootargs}; run bootsidecmd +bootsidecmd= \ + if test ${bootside} = b; then; \ + run bootb; \ + run boota; \ + else \ + run boota; \ + run bootb; \ + fi +boota=setenv bootpart 2; setenv rootfs rofs-a; run bootmmc +bootb=setenv bootpart 3; setenv rootfs rofs-b; run bootmmc +bootmmc=run setmmcargs; ext4load mmc 0:${bootpart} ${loadaddr} fitImage && bootm ${loadaddr}${bootmconf}; echo Error loading kernel FIT image with fitconfig ${fitconfig}; bootm ${loadaddr}; echo Error loading kernel FIT image +setmmcargs=setenv bootargs ${origbootargs} + diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/u-boot/u-boot_%.bbappend b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/u-boot/u-boot_%.bbappend new file mode 100644 index 0000000000..7e4311d62c --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-bsp/u-boot/u-boot_%.bbappend @@ -0,0 +1,9 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +# needed by u-boot Makefile if ENV_FILE is used +DEPENDS:append = " xxd-native" + +SRC_URI:append = "\ + file://fvp.cfg \ + file://fvp.env \ +" diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-kernel/linux/linux-yocto/defconfig b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-kernel/linux/linux-yocto/defconfig new file mode 100644 index 0000000000..cf4595342b --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-kernel/linux/linux-yocto/defconfig @@ -0,0 +1,191 @@ +CONFIG_LOCALVERSION="-yocto-standard" +# CONFIG_LOCALVERSION_AUTO is not set +CONFIG_HIGH_RES_TIMERS=y +CONFIG_PREEMPT=y +CONFIG_LOG_BUF_SHIFT=13 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=13 +CONFIG_RELAY=y +CONFIG_BOOT_CONFIG=y +CONFIG_ARCH_VEXPRESS=y +CONFIG_CMDLINE="console=ttyAMA0 loglevel=9" +# CONFIG_SUSPEND is not set +# CONFIG_STACKPROTECTOR is not set +CONFIG_MODULES=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_NET=y +CONFIG_NETFILTER=y +CONFIG_PACKET=y +CONFIG_PACKET_DIAG=y +CONFIG_UNIX=y +CONFIG_UNIX_DIAG=y +CONFIG_INET=y +CONFIG_IP_PNP=y +CONFIG_IP_PNP_DHCP=y +CONFIG_IP_PNP_BOOTP=y +CONFIG_SYN_COOKIES=y +CONFIG_NET_SCHED=y +CONFIG_DEVTMPFS=y +CONFIG_DEVTMPFS_MOUNT=y +# CONFIG_EFI_BOOTLOADER_CONTROL is not set +# CONFIG_EFI_CAPSULE_LOADER is not set +# CONFIG_EFI_TEST is not set +# CONFIG_RESET_ATTACK_MITIGATION is not set +CONFIG_SCSI=y +# CONFIG_BLK_DEV_BSG is not set +CONFIG_NETDEVICES=y +CONFIG_NET_CORE=y +CONFIG_ETHERNET=y +CONFIG_PHYLIB=y +CONFIG_SMSC_PHY=y +# CONFIG_NET_VENDOR_ALACRITECH is not set +# CONFIG_NET_VENDOR_AMAZON is not set +# CONFIG_NET_VENDOR_AMD is not set +# CONFIG_NET_VENDOR_AQUANTIA is not set +# CONFIG_NET_VENDOR_ARC is not set +# CONFIG_NET_VENDOR_BROADCOM is not set +# CONFIG_NET_VENDOR_CADENCE is not set +# CONFIG_NET_VENDOR_CAVIUM is not set +# CONFIG_NET_VENDOR_CORTINA is not set +# CONFIG_NET_VENDOR_EZCHIP is not set +# CONFIG_NET_VENDOR_GOOGLE is not set +# CONFIG_NET_VENDOR_HISILICON is not set +# CONFIG_NET_VENDOR_HUAWEI is not set +# CONFIG_NET_VENDOR_INTEL is not set +# CONFIG_NET_VENDOR_MARVELL is not set +# CONFIG_NET_VENDOR_MICREL is not set +# CONFIG_NET_VENDOR_MICROCHIP is not set +# CONFIG_NET_VENDOR_MICROSEMI is not set +# CONFIG_NET_VENDOR_NI is not set +# CONFIG_NET_VENDOR_NATSEMI is not set +# CONFIG_NET_VENDOR_NETRONOME is not set +# CONFIG_NET_VENDOR_PENSANDO is not set +# CONFIG_NET_VENDOR_QUALCOMM is not set +# CONFIG_NET_VENDOR_RENESAS is not set +# CONFIG_NET_VENDOR_ROCKER is not set +# CONFIG_NET_VENDOR_SAMSUNG is not set +# CONFIG_NET_VENDOR_SEEQ is not set +# CONFIG_NET_VENDOR_SOLARFLARE is not set +CONFIG_NET_VENDOR_SMSC=y +CONFIG_SMC91X=y +CONFIG_SMSC911X=y +# CONFIG_NET_VENDOR_SOCIONEXT is not set +# CONFIG_NET_VENDOR_STMICRO is not set +# CONFIG_NET_VENDOR_SYNOPSYS is not set +# CONFIG_NET_VENDOR_VIA is not set +# CONFIG_NET_VENDOR_WIZNET is not set +# CONFIG_NET_VENDOR_XILINX is not set +# CONFIG_SERIO_SERPORT is not set +CONFIG_SERIAL_AMBA_PL011=y +CONFIG_SERIAL_AMBA_PL011_CONSOLE=y +CONFIG_USB=y +CONFIG_USB_STORAGE=y +CONFIG_USB_UAS=y +CONFIG_USB_ISP1760=y +CONFIG_RTC_CLASS=y +CONFIG_RTC_DRV_PL031=y +CONFIG_TEE=y +CONFIG_OPTEE=y +CONFIG_VFAT_FS=y +CONFIG_TMPFS=y +CONFIG_CONFIGFS_FS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_CODEPAGE_860=y +CONFIG_NLS_ISO8859_1=y +CONFIG_NLS_ISO8859_15=y +CONFIG_NLS_UTF8=y +CONFIG_LIBCRC32C=y +# CONFIG_SECTION_MISMATCH_WARN_ONLY is not set +CONFIG_DEBUG_FS=y +CONFIG_PANIC_TIMEOUT=5 + +# Enable VIRTIO +CONFIG_VIRTIO_MENU=y +CONFIG_VIRTIO=y +CONFIG_VIRTIO_BLK=y +CONFIG_EXT4_FS=y + +# MMC support +CONFIG_MMC=y +CONFIG_MMC_BLOCK=y +CONFIG_MMC_ARMMMCI=y +# mmc depends on the fixed voltage regulator through devicetree +CONFIG_REGULATOR=y +CONFIG_REGULATOR_FIXED_VOLTAGE=y + +CONFIG_MFD_VEXPRESS_SYSREG=y +CONFIG_VEXPRESS_CONFIG=y + +# needed for boot to userspace +CONFIG_BINFMT_ELF=y + +# needed by systemd +# https://wiki.gentoo.org/wiki/Systemd#Kernel +CONFIG_CGROUPS=y +CONFIG_CGROUP_DEVICE=y +CONFIG_CGROUP_SCHED=y +CONFIG_CGROUP_PIDS=y +CONFIG_CGROUP_FREEZER=y +CONFIG_INOTIFY_USER=y +CONFIG_PROC_FS=y +CONFIG_BPF_SYSCALL=y + +CONFIG_CPUSETS=y +CONFIG_PROC_PID_CPUSET=y +CONFIG_CGROUP_CPUACCT=y +CONFIG_PAGE_COUNTER=y +CONFIG_MEMCG=y +CONFIG_NAMESPACES=y +CONFIG_OVERLAY_FS=y + +# not allow init=... to be a script +CONFIG_BINFMT_SCRIPT=y + +# allow initramfs compression +CONFIG_RD_GZIP=y + +# timestamps in kernel log +CONFIG_PRINTK_TIME=y + +# from systemd config in their repo +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_INITRD=y +CONFIG_BLK_DEV_SD=y + +CONFIG_BPF_EVENTS=y +CONFIG_BSD_PROCESS_ACCT=y +CONFIG_CGROUP_BPF=y +CONFIG_CGROUP_HUGETLB=y +CONFIG_CGROUP_MISC=y +CONFIG_CGROUP_NET_PRIO=y +CONFIG_CGROUP_PERF=y + + +CONFIG_IKCONFIG_PROC=y +CONFIG_IKCONFIG=y + +CONFIG_TMPFS_POSIX_ACL=y +CONFIG_TMPFS_XATTR=y +CONFIG_BINFMT_MISC=y + +CONFIG_BLK_CGROUP=y +CONFIG_BLK_CGROUP_IOCOST=y +CONFIG_BLK_CGROUP_IOLATENCY=y +CONFIG_BLK_CGROUP_IOPRIO=y + +CONFIG_BLK_DEV_DM=y + +CONFIG_SMP=y + + +# systemd tries these, better enable them +CONFIG_POSIX_MQUEUE=y +CONFIG_HUGETLBFS=y +CONFIG_HUGETLB_PAGE=y + + +# to get entropy quicker, +# needed for e.g. dbus-broker +CONFIG_HW_RANDOM=y +CONFIG_HW_RANDOM_VIRTIO=y +CONFIG_VIRTIO_PCI=y +CONFIG_VIRTIO_MMIO=y diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-kernel/linux/linux-yocto_%.bbappend b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-kernel/linux/linux-yocto_%.bbappend new file mode 100644 index 0000000000..37aba1a744 --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-kernel/linux/linux-yocto_%.bbappend @@ -0,0 +1,7 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" + +COMPATIBLE_MACHINE = "fvp" + +SRC_URI:append = " \ +file://defconfig \ +" diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-phosphor/packagegroups/packagegroup-fvp-apps.bb b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-phosphor/packagegroups/packagegroup-fvp-apps.bb new file mode 100644 index 0000000000..30d8bd45b2 --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-phosphor/packagegroups/packagegroup-fvp-apps.bb @@ -0,0 +1,39 @@ +SUMMARY = "OpenBMC for FVP - Applications" +PR = "r1" + +inherit packagegroup + +PROVIDES = "${PACKAGES}" +PACKAGES = " \ + ${PN}-chassis \ + ${PN}-flash \ + ${PN}-system \ + " + +PROVIDES += "virtual/obmc-chassis-mgmt" +PROVIDES += "virtual/obmc-flash-mgmt" +PROVIDES += "virtual/obmc-system-mgmt" +PROVIDES += "virtual/obmc-user-mgmt" + +RPROVIDES:${PN}-chassis += "virtual-obmc-chassis-mgmt" +RPROVIDES:${PN}-flash += "virtual-obmc-flash-mgmt" +RPROVIDES:${PN}-system += "virtual-obmc-system-mgmt" +RPROVIDES:${PN}-user += "virtual-user-system-mgmt" + +SUMMARY:${PN}-chassis = "FVP Chassis" +RDEPENDS:${PN}-chassis = " \ + " + +SUMMARY:${PN}-user = "FVP User" +RDEPENDS:${PN}-user = " \ + " + +SUMMARY:${PN}-flash = "FVP Flash" +RDEPENDS:${PN}-flash = " \ + " + +SUMMARY:${PN}-system = "FVP System" +RDEPENDS:${PN}-system = " \ + bmcweb \ + webui-vue \ + " diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-phosphor/pldm/files/host_eid b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-phosphor/pldm/files/host_eid new file mode 100644 index 0000000000..573541ac97 --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-phosphor/pldm/files/host_eid @@ -0,0 +1 @@ +0 diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-phosphor/pldm/pldm_%.bbappend b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-phosphor/pldm/pldm_%.bbappend new file mode 100644 index 0000000000..8388b841fb --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/recipes-phosphor/pldm/pldm_%.bbappend @@ -0,0 +1,12 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +EXTRA_OEMESON:append = " \ + -Doem-ibm=disabled \ + " + +SRC_URI:append = " file://host_eid " + +do_install:append() { + install -d ${D}/usr/share/pldm/bios + install -D -m 0644 ${WORKDIR}/host_eid ${D}/usr/share/pldm +} diff --git a/meta-evb/meta-evb-arm/meta-evb-fvp-base/wic/emmc-fvp.wks.in b/meta-evb/meta-evb-arm/meta-evb-fvp-base/wic/emmc-fvp.wks.in new file mode 100644 index 0000000000..93ae7f68f0 --- /dev/null +++ b/meta-evb/meta-evb-arm/meta-evb-fvp-base/wic/emmc-fvp.wks.in @@ -0,0 +1,30 @@ +# short-description: Create an image for eMMC +# long-description: Creates an eMMC card image for the User Data Area that can +# be used with the Arm Base FVP. +# +# Assumes a minimum flash size of 16GB. +# Assumes U-Boot is stored elsewhere, such as an eMMC boot volume or NOR flash. +# +# --- - ----- -------- -------- -------- -------- ------ -------- ------- +# |GPT| | env | boot-a | boot-b | rofs-a | rofs-b | rwfs | hostfw |GPT-sec| +# --- - ----- -------- -------- -------- -------- ------ -------- ------- +# ^ 1MB 64MB 64MB 1GB 1GB 7GB 5GB +# | +# 0x5000 +# +# Primary GPT size (Beginning of image): +# 512B (Protective MBR) + 512B (Primary Header) + 16KB (Primary Table) +# First partition (u-boot-env) is 4K-aligned, which puts it at offset 0x5000 +# +# Secondary GPT size (End of image): +# 16KB (Secondary Table) + 512B (Secondary Header) + +bootloader --ptable gpt + +part --align 4 --fixed-size 1M +part --fstype=ext4 --fixed-size 64M --source bootimg-partition --label boot-a +part --fstype=ext4 --fixed-size 64M --source bootimg-partition --label boot-b +part --fstype=ext4 --fixed-size 1G --source rootfs --label rofs-a +part --fstype=ext4 --fixed-size 1G --source rootfs --label rofs-b +part --fstype=ext4 --fixed-size 7G --label rwfs +#part --fstype=ext4 --fixed-size ${WKS_HOSTFW_SIZE} --source rootfs --rootfs-dir=${DEPLOY_DIR_IMAGE}/hostfw/image/ --label hostfw -- cgit v1.2.3