1
0
mirror of https://git.yoctoproject.org/meta-arm synced 2026-06-06 14:50:03 +00:00

meta-gem5: remove

The meta-gem5 layer is unmaintained and gem5 is incompatible with Python
3.11, so won't work with master without work that is still ongoing.

Signed-off-by: Ross Burton <ross.burton@arm.com>
This commit is contained in:
Ross Burton
2022-12-05 11:58:28 +00:00
parent c7b85230a2
commit 132089830b
56 changed files with 4 additions and 1815 deletions
+3 -9
View File
@@ -120,12 +120,6 @@ fvp-baser-aemv8r64:
fvps:
extends: .build
gem5-arm64:
extends: .build
parallel:
matrix:
- VIRT: [none, xen]
generic-arm64:
extends: .build
@@ -221,7 +215,7 @@ check-layers:
"yocto-check-layer-wrapper $CI_PROJECT_DIR/$LAYER --dependency $CI_PROJECT_DIR/meta-* $KAS_WORK_DIR/meta-openembedded/meta-oe --no-auto-dependency"
parallel:
matrix:
- LAYER: [meta-arm, meta-arm-bsp, meta-arm-toolchain, meta-gem5]
- LAYER: [meta-arm, meta-arm-bsp, meta-arm-toolchain]
pending-updates:
extends: .setup
@@ -231,8 +225,8 @@ pending-updates:
script:
- rm -fr update-report
# This configuration has all of the layers we need enabled
- kas shell ci/meta-openembedded.yml:ci/gem5-arm64.yml:ci/qemuarm64.yml --command \
"$CI_PROJECT_DIR/scripts/machine-summary.py -t report -o $CI_PROJECT_DIR/update-report $($CI_PROJECT_DIR/ci/listmachines.py meta-arm meta-arm-bsp meta-gem5)"
- kas shell ci/qemuarm64.yml:ci/meta-openembedded.yml --command \
"$CI_PROJECT_DIR/scripts/machine-summary.py -t report -o $CI_PROJECT_DIR/update-report $($CI_PROJECT_DIR/ci/listmachines.py meta-arm meta-arm-bsp)"
# Do this on x86 whilst the compilers are x86-only
tags:
- x86_64
-5
View File
@@ -18,11 +18,6 @@ This repository contains the Arm layers for OpenEmbedded.
This layer contains recipes for Arm's binary toolchains (GCC and Clang for -A and -M), and a recipe to build Arm's GCC.
* meta-gem5
This layer contains recipes and machines for gem5, a system-level and processor simulator.
Other Directories
-----------------
-16
View File
@@ -1,16 +0,0 @@
header:
version: 11
includes:
- ci/base.yml
- ci/meta-openembedded.yml
repos:
meta-arm:
layers:
meta-gem5:
machine: gem5-arm64
target:
- core-image-minimal
- gem5-aarch64-native
-17
View File
@@ -1,17 +0,0 @@
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
-1
View File
@@ -1 +0,0 @@
See ../README.md
-19
View File
@@ -1,19 +0,0 @@
# We have a conf and classes directory, add to BBPATH
BBPATH .= ":${LAYERDIR}"
# We have recipes-* directories, add to BBFILES
BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
${LAYERDIR}/recipes-*/*/*.bbappend"
BBFILE_COLLECTIONS += "meta-gem5"
BBFILE_PATTERN_meta-gem5 = "^${LAYERDIR}/"
BBFILE_PRIORITY_meta-gem5 = "5"
LAYERDEPENDS_meta-gem5 = "core openembedded-layer meta-arm"
LAYERSERIES_COMPAT_meta-gem5 = "langdale mickledore"
BBFILES_DYNAMIC += " \
virtualization-layer:${LAYERDIR}/dynamic-layers/meta-virtualization/*/*/*.bbappend \
"
DISTRO_FEATURES_NATIVE:append = " ${@bb.utils.filter('DISTRO_FEATURES', 'xen', d)}"
-54
View File
@@ -1,54 +0,0 @@
# Configuration for gem5 running on ARM64
#@TYPE: Machine
#@NAME: Gem5 arm64 machine
#@DESCRIPTION: Machine configuration for Gem5 arm64
TUNE_FEATURES = "aarch64"
require conf/machine/include/arm/arch-armv8a.inc
MACHINE_FEATURES = "optee pci"
KERNEL_IMAGETYPES = "Image vmlinux"
KERNEL_IMAGETYPE = "Image"
IMAGE_FSTYPES += "tar.bz2 ext4"
SERIAL_CONSOLES = "115200;ttyAMA0"
EXTRA_IMAGEDEPENDS += "virtual/gem5-bootloader"
PREFERRED_PROVIDER_virtual/kernel ?= "linux-yocto"
PREFERRED_VERSION_linux-yocto ?= "5.4%"
# Uncomment the following if you need to build gem5 provided bootloader, else
# using standard bootloader by Linux aarch64
# Use gem5 provided bootloader
# PREFERRED_PROVIDER_virtual/gem5-bootloader = "gem5-aarch64-bootloader"
# use the dtb stored in the kernel recipe
# KERNEL_DEVICETREE ?= "gem5-arm64/armv8_gem5_v2_4cpu.dtb"
# Use Linux aarch64 boot wrapper with FDT support and generated
# dtb (gem5-aarch64-dtb.bb)
PREFERRED_PROVIDER_virtual/gem5-bootloader = "boot-wrapper-aarch64"
BOOT_WRAPPER_AARCH64_CMDLINE ?= "\
earlyprintk=pl011,0x1c090000 console=ttyAMA0 root=/dev/vda rw mem=1G \
"
# Use baremetal profile and axf file so dtb is in axf file
GEM5_RUN_PROFILE = "configs/example/arm/baremetal.py"
GEM5_RUN_KERNEL = "linux-system.axf"
GEM5_RUN_EXTRA = ""
GEM5_RUN_DTB = ""
GEM5_RUN_CMDLINE = ""
EXTRA_IMAGEDEPENDS += "gem5-aarch64-native"
# As this is a virtual target that will not be used in the real world there is
# no need for real SSH keys. Disable rng-tools (which takes too long to
# initialise) and install the pre-generated keys.
PACKAGECONFIG:remove:pn-openssh = "rng-tools"
MACHINE_EXTRA_RRECOMMENDS += "ssh-pregen-hostkeys"
-32
View File
@@ -1,32 +0,0 @@
# Gem5 Arm64 Platform Support in meta-gem5
## Howto Build and Run
### Configuration:
In the local.conf file, MACHINE should be set as follow:
MACHINE ?= "gem5-arm64"
And in the bblayers.conf the following layers need to be added:
##OEROOT##/meta-arm/meta-arm-toolchain
##OEROOT##/meta-arm/meta-arm
### Build:
```bash$ bitbake core-image-minimal```
### Run:
After compilation of an image, you can execute it using the compiled gem5
with the followin command:
```./tmp/deploy/tools/start-gem5.sh```
You can modify the script to change the command line options of gem5.
## Devices supported in the kernel
- serial
### Untested:
- pci
- sata
- ide
## Devices not supported or not functional
@@ -1,32 +0,0 @@
# Use OVERRIDES to minimize the usage of
# ${@bb.utils.contains('DISTRO_FEATURES', 'xen', ...
OVERRIDES:append = "${@bb.utils.contains('DISTRO_FEATURES', 'xen', ':xen', '', d)}"
# Xen image to put in the image
# This should point to a file in the deploy image directory
BOOT_WRAPPER_AARCH64_XEN ??= "xen-${MACHINE}"
# Xen command line for the image
BOOT_WRAPPER_AARCH64_XEN_CMDLINE ??= "noreboot dom0_mem=256M"
BOOT_WRAPPER_AARCH64_XEN_CMDLINE:gem5-arm64 = "noreboot dom0_mem=256M console=dtuart \
dtuart=/uart@1c090000 bootscrub=0"
# Fix command line in the axf file for gem5-arm64 when Xen is present
BOOT_WRAPPER_AARCH64_CMDLINE_xen:gem5-arm64 = "console=hvc0 root=/dev/vda rw"
# Image generated by boot wrapper when Xen is present
BOOT_WRAPPER_AARCH64_IMAGE:xen ?= "xen-system.axf"
EXTRA_OECONF:append:xen = " \
--with-xen=${WORKDIR}/kernel/arch/arm64/boot/Image \
--with-xen-cmdline="" \
"
EXTRA_OEMAKE:append:xen = " \
XEN_IMAGE=${DEPLOY_DIR_IMAGE}/${BOOT_WRAPPER_AARCH64_XEN} \
XEN_CMDLINE="${BOOT_WRAPPER_AARCH64_XEN_CMDLINE}" \
"
# We need xen if it is activated
do_deploy[depends] += "${@bb.utils.contains('DISTRO_FEATURES', 'xen', 'xen:do_deploy', '', d)}"
@@ -1,7 +0,0 @@
# When booting gem5-arm64 with Xen we need to set the cpu as Cortex A53 and
# remove support for pointer authentification
GEM5_RUN_EXTRA:append = " \
${@bb.utils.contains('DISTRO_FEATURES_NATIVE', 'xen', \
'--param=system.cpu_cluster[0].cpus[0].isa[0].midr=0x410fd030 \
--param=system.cpu_cluster[0].cpus[0].isa[0].id_aa64isar1_el1=0x0', \
'', d)}"
@@ -1,2 +0,0 @@
CONFIG_DEBUG=y
CONFIG_EARLY_PRINTK_VEXPRESS=y
@@ -1,4 +0,0 @@
# gem5-arm64 support
COMPATIBLE_MACHINE:gem5-arm64 = "gem5-arm64"
FILESEXTRAPATHS:prepend:gem5-arm64 := "${THISDIR}/files:"
SRC_URI:append:gem5-arm64 = " file://early-printk.cfg"
@@ -1,14 +0,0 @@
FILESEXTRAPATHS:prepend:gem5-arm64 := "${THISDIR}:"
#
# virtualization kmeta extra
#
SRC_URI:append:gem5-arm64 = " file://virtualization-kmeta-extra-gem5;type=kmeta;name=virtualization-kmeta-extra-gem5;destsuffix=virtualization-kmeta-extra-gem5"
# We need to turn off SVE support in the Linux kernel otherwise Xen is stopping
# Linux kernel with a coredump while trying to access XEN bit of CPACR1 core
# register.
LINUX_VIRTUALIZATION_DISABLE_ARM64_SVE:gem5-arm64 = "${@bb.utils.contains('DISTRO_FEATURES', \
'xen', ' features/disable-arm64-sve.scc','',d)}"
KERNEL_FEATURES:append:gem5-arm64 = "${LINUX_VIRTUALIZATION_DISABLE_ARM64_SVE}"
@@ -1,4 +0,0 @@
# We need to turn off SVE support in the Linux kernel otherwise Xen is stopping
# Linux kernel with a coredump while trying to access ZEN bit of CPACR1 core
# register.
# CONFIG_ARM64_SVE is not set
@@ -1,3 +0,0 @@
define KFEATURE_DESCRIPTION "Disable SVE support"
kconf non-hardware disable-arm64-sve.cfg
@@ -1,16 +0,0 @@
# Gem5 aarch64 support
COMPATIBLE_MACHINE:gem5-arm64 = "gem5-arm64"
PROVIDES:gem5-arm64 += "virtual/gem5-bootloader"
# For gem5 we use the dtb generated by gem5 directly
DEPENDS:append:gem5-arm64 = " gem5-aarch64-dtb"
BOOT_WRAPPER_AARCH64_DEVICETREE:gem5-arm64 = "gem5-aarch64.dtb"
# The dtb must be generated for us to generate the axf
DEPLOY_DEPEND_LIST ?= ""
DEPLOY_DEPEND_LIST:gem5-arm64 = " gem5-aarch64-dtb:do_deploy"
do_deploy[depends] += "${DEPLOY_DEPEND_LIST}"
# The base recipe has been upgraded, so hold back at known working revision
SRCREV = "8d5a765251d9113c3c0f9fa14de42a9e7486fe8a"
@@ -1,37 +0,0 @@
Upstream-Status: Backport
Signed-off-by: Ross Burton <ross.burton@arm.com>
From 89958f7f30ec722e30e1bcffdeab547c874fa475 Mon Sep 17 00:00:00 2001
From: Adrian Herrera <adrian.herrera@arm.com>
Date: Mon, 15 Mar 2021 13:14:44 +0000
Subject: [PATCH] python: debug, fix Mapping import
Change "collections.Mapping" to "collections.abc.Mapping".
"collections.Mapping" was an alias, it is deprecated starting from Python 3.3, and it will be removed in Python 3.10.
Change-Id: Ic257e3c5206eb3d48d4eed85a93fac48bd3b8dc4
Signed-off-by: Adrian Herrera <adrian.herrera@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/43023
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
---
src/python/m5/debug.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/python/m5/debug.py b/src/python/m5/debug.py
index d808850cc..787a39ece 100644
--- a/src/python/m5/debug.py
+++ b/src/python/m5/debug.py
@@ -26,7 +26,7 @@
from __future__ import print_function
-from collections import Mapping
+from collections.abc import Mapping
import _m5.debug
from _m5.debug import SimpleFlag, CompoundFlag
--
2.25.1
@@ -1,39 +0,0 @@
#!/bin/bash
# Get parameters from bitbake configuration
source <(bitbake -e gem5-aarch64-native | grep \
-e "^STAGING_.*_NATIVE=" \
-e "^DEPLOY_DIR.*=" \
-e "^GEM5_RUN.*=")
export M5_PATH="${DEPLOY_DIR_IMAGE}"
args=""
if [ -n "${GEM5_RUN_KERNEL}" ]; then
kernfile=$(readlink -f ${DEPLOY_DIR_IMAGE}/${GEM5_RUN_KERNEL})
args="$args --kernel=$kernfile"
fi
if [ -n "${GEM5_RUN_DISK}" ]; then
diskfile=$(readlink -f ${DEPLOY_DIR_IMAGE}/${GEM5_RUN_DISK})
args="$args --disk-image=$diskfile"
fi
if [ -n "${GEM5_RUN_DTB}" ]; then
dtbfile=$(readlink -f ${DEPLOY_DIR_IMAGE}/${GEM5_RUN_DTB})
args="$args --dtb=$dtbfile"
fi
if [ -n "${GEM5_RUN_CMDLINE}" ]; then
args="$args --command-line='${GEM5_RUN_CMDLINE}'"
fi
if [ -n "${GEM5_RUN_EXTRA}" ]; then
args="$args ${GEM5_RUN_EXTRA}"
fi
oe-run-native gem5-aarch64-native ${GEM5_RUN_CONFIG} \
${STAGING_DATADIR_NATIVE}/gem5/${GEM5_RUN_PROFILE} ${args} "$@"
@@ -1,30 +0,0 @@
# Build instructions for gem5 custom bootloader
SUMMARY = "Gem5 AARCH64 boot loader"
LICENSE = "BSD-3-Clause"
inherit deploy
PROVIDES += "virtual/gem5-bootloader"
COMPATIBLE_MACHINE = "gem5-arm64"
BOOTLOADER_SRC_PATH ?= "${S}/system/arm/bootloader/arm64"
# no configure step
do_configure[noexec] = "1"
# no install
do_install[noexec] = "1"
do_compile() {
oe_runmake -C ${BOOTLOADER_SRC_PATH} all CROSS_COMPILE=${TARGET_PREFIX}
}
do_deploy() {
oe_runmake -C ${BOOTLOADER_SRC_PATH} install \
CROSS_COMPILE=${TARGET_PREFIX} DESTDIR=${DEPLOYDIR}/binaries
}
addtask deploy before do_build after do_compile
@@ -1,7 +0,0 @@
# gem5 custom bootloader
require gem5-source_20.inc
BPN = "gem5-aarch64-bootloader"
require gem5-aarch64-bootloader.inc
@@ -1,30 +0,0 @@
# Use gem5 executable to produce a dtb
LICENSE = "MIT"
inherit deploy
DEPENDS = "gem5-aarch64-native"
do_configure[noexec] = "1"
do_compile() {
# generate a dtb using gem5
gem5.opt \
${STAGING_DATADIR_NATIVE}/gem5/${GEM5_RUN_PROFILE} \
--dtb-gen
if [ ! -f m5out/system.dtb ]; then
echo "No dtb generated !!!"
exit 1
fi
}
do_install[noexec] = "1"
do_deploy() {
install --d ${DEPLOYDIR}
cp m5out/system.dtb ${DEPLOYDIR}/gem5-aarch64.dtb
}
addtask deploy before do_build after do_compile
@@ -1,40 +0,0 @@
# gem5 aarch64 specific configuration
# Build arm64 gem5
GEM5_BUILD_CONFIGS ?= "build/ARM/gem5.${GEM5_BUILD_VARIANT}"
SRC_URI += "file://start-gem5.sh"
inherit deploy
# Parameters for the start script
GEM5_RUN_CONFIG ?= "gem5.${GEM5_BUILD_VARIANT}"
# Linux kernel file to boot
GEM5_RUN_KERNEL ?= "vmlinux"
# Disk Image to use
GEM5_RUN_DISK ?= "*-${MACHINE}.ext4"
# DTB to use
GEM5_RUN_DTB ?= "${@os.path.basename(d.getVar('KERNEL_DEVICETREE'))}"
# Linux command line to pass
GEM5_RUN_CMDLINE ?= "earlyprintk=pl011,0x1c090000 console=ttyAMA0 rw mem=512MB root=/dev/sda rootwait"
# Extra arguments to pass to gem5
GEM5_RUN_EXTRA ?= "--mem-size=512MB -n 4 --machine-type=VExpress_GEM5_V2"
#This is required so that our binaries are in the sysroot. We need this
# to have both gem5 required libraries and gem5 in the same sysroot.
addtask addto_recipe_sysroot after do_populate_sysroot before do_build
do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_TOOLS}"
do_deploy() {
install -d ${DEPLOYDIR}
install -m 755 ${WORKDIR}/start-gem5.sh ${DEPLOYDIR}/.
}
addtask deploy before do_build after do_compile
@@ -1,97 +0,0 @@
From be710c5657b03bc9a9ce18ecf7ce1956265bae47 Mon Sep 17 00:00:00 2001
From: Adrian Herrera <adrian.herrera@arm.com>
Date: Thu, 10 Dec 2020 18:07:21 +0000
Subject: [PATCH] dev-arm: SMMUv3, enable interrupt interface
Users can set "irq_interface_enable" to allow software to program
SMMU_IRQ_CTRL and SMMU_IRQ_CTRLACK. This is required to boot Linux v5.4+
in a reasonable time. Notice the model does not implement architectural
interrupt sources, so no assertions will happen.
Change-Id: Ie138befdf5a204fe8fce961081c575c2166e22b9
Signed-off-by: Adrian Herrera <adrian.herrera@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/38555
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Upstream-Status: Accepted [https://gem5-review.googlesource.com/c/public/gem5/+/38555]
Expected version: v20.2
---
src/dev/arm/SMMUv3.py | 5 +++++
src/dev/arm/smmu_v3.cc | 10 +++++++++-
src/dev/arm/smmu_v3.hh | 4 +++-
3 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/src/dev/arm/SMMUv3.py b/src/dev/arm/SMMUv3.py
index 29c15682bf..f57be896f9 100644
--- a/src/dev/arm/SMMUv3.py
+++ b/src/dev/arm/SMMUv3.py
@@ -91,6 +91,11 @@ class SMMUv3(ClockedObject):
reg_map = Param.AddrRange('Address range for control registers')
system = Param.System(Parent.any, "System this device is part of")
+ irq_interface_enable = Param.Bool(False,
+ "This flag enables software to program SMMU_IRQ_CTRL and "
+ "SMMU_IRQ_CTRLACK as if the model implemented architectural "
+ "interrupt sources")
+
device_interfaces = VectorParam.SMMUv3DeviceInterface([],
"Responder interfaces")
diff --git a/src/dev/arm/smmu_v3.cc b/src/dev/arm/smmu_v3.cc
index f9bdc277c6..d73f270170 100644
--- a/src/dev/arm/smmu_v3.cc
+++ b/src/dev/arm/smmu_v3.cc
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2018-2019 ARM Limited
+ * Copyright (c) 2013, 2018-2020 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -58,6 +58,7 @@ SMMUv3::SMMUv3(SMMUv3Params *params) :
requestPort(name() + ".request", *this),
tableWalkPort(name() + ".walker", *this),
controlPort(name() + ".control", *this, params->reg_map),
+ irqInterfaceEnable(params->irq_interface_enable),
tlb(params->tlb_entries, params->tlb_assoc, params->tlb_policy),
configCache(params->cfg_entries, params->cfg_assoc, params->cfg_policy),
ipaCache(params->ipa_entries, params->ipa_assoc, params->ipa_policy),
@@ -626,6 +627,13 @@ SMMUv3::writeControl(PacketPtr pkt)
assert(pkt->getSize() == sizeof(uint32_t));
regs.cr0 = regs.cr0ack = pkt->getLE<uint32_t>();
break;
+ case offsetof(SMMURegs, irq_ctrl):
+ assert(pkt->getSize() == sizeof(uint32_t));
+ if (irqInterfaceEnable) {
+ warn("SMMUv3::%s No support for interrupt sources", __func__);
+ regs.irq_ctrl = regs.irq_ctrlack = pkt->getLE<uint32_t>();
+ }
+ break;
case offsetof(SMMURegs, cr1):
case offsetof(SMMURegs, cr2):
diff --git a/src/dev/arm/smmu_v3.hh b/src/dev/arm/smmu_v3.hh
index 6b3f3982b8..a001d71178 100644
--- a/src/dev/arm/smmu_v3.hh
+++ b/src/dev/arm/smmu_v3.hh
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013, 2018-2019 ARM Limited
+ * Copyright (c) 2013, 2018-2020 ARM Limited
* All rights reserved
*
* The license below extends only to copyright in the software and shall
@@ -94,6 +94,8 @@ class SMMUv3 : public ClockedObject
SMMUTableWalkPort tableWalkPort;
SMMUControlPort controlPort;
+ const bool irqInterfaceEnable;
+
ARMArchTLB tlb;
ConfigCache configCache;
IPACache ipaCache;
--
2.17.1
@@ -1,22 +0,0 @@
require gem5-source_20.inc
SRC_URI += "file://0001-dev-arm-SMMUv3-enable-interrupt-interface.patch"
BPN = "gem5-aarch64-native"
require gem5-aarch64-native.inc
require gem5-native.inc
# Get rid of compiler errors when building protobuf
GEM5_SCONS_ARGS:append = " CCFLAGS_EXTRA='-Wno-error=unused-variable' --verbose"
# Get rid of linker errors and have a faster link process
GEM5_SCONS_ARGS:append = " LDFLAGS_EXTRA='${BUILD_LDFLAGS}' \
MARSHAL_LDFLAGS_EXTRA='${BUILD_LDFLAGS}' --force-lto "
do_compile:prepend() {
# Gem5 expect to have python in the path (can be python2 or 3)
# Create a link named python to python3
real=$(which ${PYTHON})
ln -snf $real $(dirname $real)/python
}
@@ -1,59 +0,0 @@
From 32e35a2f179d1b036d2eb699d77f869f7787f36b Mon Sep 17 00:00:00 2001
From: Adrian Herrera <adrian.herrera@arm.com>
Date: Tue, 8 Dec 2020 20:12:55 +0000
Subject: [PATCH] util: m5ops, optional extra build flags
This increases compilation control for users. Main use case is building
m5ops as part of an image distribution. Specifying a different sysroot
or dynamic linker may be required when the cross toolchain is built as
part of the process.
Change-Id: Icbd3faa92ea6e084fc4a9b2db83129bce73faf21
Signed-off-by: Adrian Herrera <adrian.herrera@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/38416
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
Reviewed-by: Gabe Black <gabe.black@gmail.com>
Maintainer: Jason Lowe-Power <power.jg@gmail.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Upstream-Status: Accepted [https://gem5-review.googlesource.com/c/public/gem5/+/38416]
Expected version: v20.2
---
util/m5/SConstruct | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/util/m5/SConstruct b/util/m5/SConstruct
index bbae8d9bbf..a37573d763 100644
--- a/util/m5/SConstruct
+++ b/util/m5/SConstruct
@@ -136,16 +136,24 @@ for root, dirs, files in os.walk(abspath(src_dir)):
#
# This also considers scons command line settings which may look like
# environment variables, but are set after "scons" on the command line.
- def get_abi_opt(name, default):
+ def _extract_abi_opt_val(name, default):
var_name = env.subst('${ABI}.%s' % name)
- env[name] = os.environ.get(
- var_name, ARGUMENTS.get(var_name, default))
+ return os.environ.get(var_name, ARGUMENTS.get(var_name, default))
+ def get_abi_opt(name, default):
+ env[name] = _extract_abi_opt_val(name, default)
+ def append_abi_opt(name):
+ env.Append(**{ name: _extract_abi_opt_val(name, '') })
# Process the ABI's settings in the SConsopts file, storing them
# in a copy of the primary environment.
env.SConscript(Dir(root).File('SConsopts'),
exports=[ 'env', 'get_abi_opt' ])
+ # The user can pass extra build flags for each ABI
+ append_abi_opt('CCFLAGS')
+ append_abi_opt('CXXFLAGS')
+ append_abi_opt('LINKFLAGS')
+
# Once all the options have been configured, set up build targets for
# this abi.
abi_dir = build_dir.Dir(env.subst('${ABI}'))
--
2.17.1
@@ -1,26 +0,0 @@
require gem5-source_20.inc
inherit scons
HOMEPAGE = "https://www.gem5.org/documentation/general_docs/m5ops"
SUMMARY = "m5ops provide pseudo-instructions to trigger gem5 functionality"
LICENSE = "BSD-3-Clause"
M5OPS_DIR = "util/m5"
SRC_URI += "file://0001-util-m5ops-optional-extra-build-flags.patch"
OUT_DIR = "build/${TARGET_ARCH}/out"
EXTRA_OESCONS += "${TARGET_ARCH}.CROSS_COMPILE=${TARGET_PREFIX} \
${TARGET_ARCH}.CCFLAGS=--sysroot=${STAGING_DIR_TARGET} \
${TARGET_ARCH}.LINKFLAGS=--sysroot=${STAGING_DIR_TARGET} \
-C ${S}/${M5OPS_DIR} ${OUT_DIR}/m5"
# The SConstruct file for m5ops does not provide a "install" target
# We do the install process within the recipe
do_install() {
install -d ${D}${bindir} ${D}${libdir} ${D}${includedir}
install -m 755 ${B}/${M5OPS_DIR}/${OUT_DIR}/m5 ${D}${bindir}
install -m 644 ${B}/${M5OPS_DIR}/${OUT_DIR}/libm5.a ${D}${libdir}
install -m 644 ${B}/include/gem5/m5ops.h ${D}${includedir}
}
@@ -1,17 +0,0 @@
inherit update-rc.d
SUMMARY = "Enables reading any script at simulation launch time"
LICENSE = "BSD-3-Clause"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/BSD-3-Clause;md5=550794465ba0ec5312d6919e203a55f9"
SRC_URI = "file://m5-readfile.sh"
INITSCRIPT_NAME = "m5-readfile.sh"
INITSCRIPT_PARAMS = "defaults 99"
do_install() {
install -d ${D}/${INIT_D_DIR}
install -m 755 ${WORKDIR}/m5-readfile.sh ${D}/${INIT_D_DIR}
}
RDEPENDS:${PN} = "gem5-m5ops"
@@ -1,9 +0,0 @@
#!/bin/sh
### BEGIN INIT INFO
# Provides: m5-readfile
# Required-Start: $all
# Default-Start: 5
# Description: Enables reading any script at simulation launch time.
### END INIT INFO
m5 readfile | sh
@@ -1,24 +0,0 @@
require gem5-source_20.inc
SUMMARY = "m5term allows users to connect to gem5's simulated console"
HOMEPAGE = "https://www.gem5.org/documentation/general_docs/fullsystem/m5term"
LICENSE = "BSD-3-Clause"
inherit native
M5TERM_DIR = "util/term"
SRC_URI += "file://0001-add-makefile-flags.patch"
do_compile() {
oe_runmake -C ${S}/${M5TERM_DIR}
}
# The Makefile for m5term does not provide a "install" target
# We do the install process within the recipe
do_install() {
install -d ${D}${bindir}
install -m 755 ${B}/${M5TERM_DIR}/m5term ${D}${bindir}
}
addtask addto_recipe_sysroot before do_build
@@ -1,34 +0,0 @@
From 688f7103e08318edbd48cf830c0ab3a048761bbb Mon Sep 17 00:00:00 2001
From: Adrian Herrera <adrian.herrera@arm.com>
Date: Thu, 03 Dec 2020 16:45:59 +0000
Subject: [PATCH] util: m5term, fix LDFLAGS, standard make variables
Enables build systems to provide necessary flags to build m5term.
Useful specially if a different linker is intended to be used.
Change-Id: If7f867cc0965d6ad4627b5421e00a99cc3d64989
Signed-off-by: Adrian Herrera <adrian.herrera@arm.com>
Upstream-Status: Accepted [https://gem5-review.googlesource.com/c/public/gem5/+/38256]
Expected version: v20.2
---
diff --git a/util/term/Makefile b/util/term/Makefile
index 658b961..4aa1c52 100644
--- a/util/term/Makefile
+++ b/util/term/Makefile
@@ -24,12 +24,12 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-CCFLAGS= -g -O0
+CFLAGS ?= -g -O0
default: m5term
m5term: term.c
- $(CC) $(LFLAGS) -o $@ $^
+ $(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $^ $(LDLIBS)
install: m5term
$(SUDO) install -o root -m 555 m5term /usr/local/bin
@@ -1,57 +0,0 @@
# gem5 platform independent build information
SUMMARY = "A modular platform for computer-system architecture research"
HOMEPAGE = "http://gem5.org"
LICENSE = "BSD-3-Clause & MIT & LGPL-2.1-only"
# Gem5 build and run parameter
# See http://www.gem5.org/documentation/general_docs/building for the list of variants
GEM5_BUILD_VARIANT ?= "opt"
# What gem5 binary are we building
GEM5_BUILD_CONFIGS ?= "build/X86/gem5.{GEM5_BUILD_VARIANT}"
# Extra directories with sources for gem5 build. Intended to be used from
# machine configuration files, to add out-of-tree gem5 models of their
# hardware components.
GEM5_EXTRAS ?= ""
# Scons build arguments
GEM5_SCONS_ARGS ?= "CC=${BUILD_CC} CXX=${BUILD_CXX} \
AS=${BUILD_AS} AR=${BUILD_AR} ${GEM5_BUILD_CONFIGS} \
PYTHON_CONFIG=python3-config EXTRAS=${GEM5_EXTRAS}"
# Default profile to run
GEM5_RUN_PROFILE ?= "configs/example/fs.py"
# We are building a native package and we need to use scons
inherit scons native
# the build is using several tools:
# python3: scons and six
# google protobuf
# pkgconfig
# hdf5
DEPENDS += "m4-native python3-six-native protobuf-native hdf5-native pkgconfig-native \
boost-native libpng-native"
EXTRA_OESCONS = "${GEM5_SCONS_ARGS}"
do_install() {
install -d ${D}${datadir}/gem5
cp -a --no-preserve=ownership -rf configs ${D}${datadir}/gem5/.
for f in ${GEM5_BUILD_CONFIGS}; do
destname=$(basename $f)
install -d ${D}${bindir}
install -m 755 $f ${D}${bindir}/$destname
done
}
FILES:${PN} = "${datadir}/gem5/* ${bindir}/*"
INSANE_SKIP:${PN} += "already-stripped"
RDEPENDS:${PN} += "python3-native hdf5-native protobuf-native libpng-native"
addtask addto_recipe_sysroot before do_build
@@ -1,11 +0,0 @@
LIC_FILES_CHKSUM = "file://COPYING;md5=2d9514d69d8abf88b6e9125e759bf0ab \
file://LICENSE;md5=a585e2893cee63d16a1d8bc16c6297ec"
SRC_URI = "git://gem5.googlesource.com/public/gem5;protocol=https;nobranch=1 \
file://mapping.patch"
RELEASE_TAG = "v20.1.0.5"
SRCREV = "31cd81fdec46bae4b48d4f3788776936389dbdec"
PV = "${RELEASE_TAG}"
S = "${WORKDIR}/git"
@@ -1,46 +0,0 @@
Upstream-Status: Backport
Signed-off-by: Ross Burton <ross.burton@arm.com>
From f678d79b3bede48c9e095e6e9c46bd3542f23077 Mon Sep 17 00:00:00 2001
From: Bruce Ashfield <bruce.ashfield@gmail.com>
Date: Sun, 10 Jul 2022 22:56:53 -0400
Subject: [PATCH 1/2] lib/build_OID_registry: fix reproducibility issues
The script build_OID_registry captures the full path of itself
in the generated data. This causes reproduciblity issues as the
path is captured and packaged.
We use the basename of the script instead, and that allows us
to be reprodicible, with slightly less information captured in
the output data (but the generating script can still easily
be found).
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
---
lib/build_OID_registry | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lib/build_OID_registry b/lib/build_OID_registry
index d7fc32ea8ac2..f6de0a7f7457 100755
--- a/lib/build_OID_registry
+++ b/lib/build_OID_registry
@@ -8,6 +8,7 @@
#
use strict;
+use File::Basename;
my @names = ();
my @oids = ();
@@ -35,7 +36,7 @@ close IN_FILE || die;
#
open C_FILE, ">$ARGV[1]" or die;
print C_FILE "/*\n";
-print C_FILE " * Automatically generated by ", $0, ". Do not edit\n";
+print C_FILE " * Automatically generated by ", basename $0, ". Do not edit\n";
print C_FILE " */\n";
#
--
2.34.1
@@ -1,56 +0,0 @@
Upstream-Status: Backport
Signed-off-by: Ross Burton <ross.burton@arm.com>
From 10a09290f97d0435b9b304d3ef980b0cafa87bd2 Mon Sep 17 00:00:00 2001
From: Bruce Ashfield <bruce.ashfield@gmail.com>
Date: Sun, 10 Jul 2022 21:37:07 -0400
Subject: [PATCH 2/2] vt/conmakehash: improve reproducibility
The file generated by conmakehash capture the application
path used to generate the file. While that can be informative,
it varies based on where the kernel was built, as the full
path is captured.
We tweak the application to use a second input as the "capture
name", and then modify the Makefile to pass the basename of
the source, making it reproducible.
This could be improved by using some sort of path mapping,
or the application manipualing argv[1] itself, but for now
this solves the reprodicibility issue.
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
---
drivers/tty/vt/Makefile | 2 +-
scripts/conmakehash.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/tty/vt/Makefile b/drivers/tty/vt/Makefile
index edbbe0ccdb83..19e21968f8de 100644
--- a/drivers/tty/vt/Makefile
+++ b/drivers/tty/vt/Makefile
@@ -13,7 +13,7 @@ obj-$(CONFIG_HW_CONSOLE) += vt.o defkeymap.o
clean-files := consolemap_deftbl.c defkeymap.c
quiet_cmd_conmk = CONMK $@
- cmd_conmk = scripts/conmakehash $< > $@
+ cmd_conmk = scripts/conmakehash $< $(shell basename $<) > $@
$(obj)/consolemap_deftbl.c: $(src)/$(FONTMAPFILE)
$(call cmd,conmk)
diff --git a/scripts/conmakehash.c b/scripts/conmakehash.c
index cddd789fe46e..d62510b280e9 100644
--- a/scripts/conmakehash.c
+++ b/scripts/conmakehash.c
@@ -253,7 +253,7 @@ int main(int argc, char *argv[])
#include <linux/types.h>\n\
\n\
u8 dfont_unicount[%d] = \n\
-{\n\t", argv[1], fontlen);
+{\n\t", argv[2], fontlen);
for ( i = 0 ; i < fontlen ; i++ )
{
--
2.34.1
@@ -1,95 +0,0 @@
/*
* Copyright (c) 2015-2016 ARM Limited
* All rights reserved
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Andreas Sandberg
*/
/dts-v1/;
/memreserve/ 0x80000000 0x00010000;
/include/ "vexpress_gem5_v2.dtsi"
/ {
model = "V2P-AARCH64";
compatible = "arm,vexpress,v2p-aarch64", "arm,vexpress";
memory@80000000 {
device_type = "memory";
reg = <0 0x80000000 0x4 0x00000000>;
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 0 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
};
virt-encoder {
compatible = "drm,virtual-encoder";
port {
dp0_virt_input: endpoint@0 {
remote-endpoint = <&dp0_output>;
};
};
display-timings {
native-mode = <&timing0>;
timing0: timing_1080p60 {
/* 1920x1080-60 */
clock-frequency = <148500000>;
hactive = <1920>;
vactive = <1080>;
hfront-porch = <148>;
hback-porch = <88>;
hsync-len = <44>;
vfront-porch = <36>;
vback-porch = <4>;
vsync-len = <5>;
};
};
};
};
&dp0 {
status = "ok"
port {
dp0_output: endpoint@0 {
remote-endpoint = <&dp0_virt_input>;
};
};
};
@@ -1,103 +0,0 @@
/*
* Copyright (c) 2015-2016 ARM Limited
* All rights reserved
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Andreas Sandberg
*/
/dts-v1/;
/memreserve/ 0x80000000 0x00010000;
/include/ "vexpress_gem5_v2.dtsi"
/ {
model = "V2P-AARCH64";
compatible = "arm,vexpress,v2p-aarch64", "arm,vexpress";
memory@80000000 {
device_type = "memory";
reg = <0 0x80000000 0x4 0x00000000>;
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 0 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
cpu@1 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 1 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
};
virt-encoder {
compatible = "drm,virtual-encoder";
port {
dp0_virt_input: endpoint@0 {
remote-endpoint = <&dp0_output>;
};
};
display-timings {
native-mode = <&timing0>;
timing0: timing_1080p60 {
/* 1920x1080-60 */
clock-frequency = <148500000>;
hactive = <1920>;
vactive = <1080>;
hfront-porch = <148>;
hback-porch = <88>;
hsync-len = <44>;
vfront-porch = <36>;
vback-porch = <4>;
vsync-len = <5>;
};
};
};
};
&dp0 {
status = "ok"
port {
dp0_output: endpoint@0 {
remote-endpoint = <&dp0_virt_input>;
};
};
};
@@ -1,119 +0,0 @@
/*
* Copyright (c) 2015-2016 ARM Limited
* All rights reserved
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Andreas Sandberg
*/
/dts-v1/;
/memreserve/ 0x80000000 0x00010000;
/include/ "vexpress_gem5_v2.dtsi"
/ {
model = "V2P-AARCH64";
compatible = "arm,vexpress,v2p-aarch64", "arm,vexpress";
memory@80000000 {
device_type = "memory";
reg = <0 0x80000000 0x4 0x00000000>;
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 0 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
cpu@1 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 1 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
cpu@2 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 2 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
cpu@3 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 3 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
};
virt-encoder {
compatible = "drm,virtual-encoder";
port {
dp0_virt_input: endpoint@0 {
remote-endpoint = <&dp0_output>;
};
};
display-timings {
native-mode = <&timing0>;
timing0: timing_1080p60 {
/* 1920x1080-60 */
clock-frequency = <148500000>;
hactive = <1920>;
vactive = <1080>;
hfront-porch = <148>;
hback-porch = <88>;
hsync-len = <44>;
vfront-porch = <36>;
vback-porch = <4>;
vsync-len = <5>;
};
};
};
};
&dp0 {
status = "ok"
port {
dp0_output: endpoint@0 {
remote-endpoint = <&dp0_virt_input>;
};
};
};
@@ -1,151 +0,0 @@
/*
* Copyright (c) 2015-2016 ARM Limited
* All rights reserved
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Andreas Sandberg
*/
/dts-v1/;
/memreserve/ 0x80000000 0x00010000;
/include/ "vexpress_gem5_v2.dtsi"
/ {
model = "V2P-AARCH64";
compatible = "arm,vexpress,v2p-aarch64", "arm,vexpress";
memory@80000000 {
device_type = "memory";
reg = <0 0x80000000 0x4 0x00000000>;
};
cpus {
#address-cells = <1>;
#size-cells = <0>;
cpu@0 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 0 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
cpu@1 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 1 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
cpu@2 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 2 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
cpu@3 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 3 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
cpu@4 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 4 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
cpu@5 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 5 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
cpu@6 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 6 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
cpu@7 {
device_type = "cpu";
compatible = "gem5,armv8", "arm,armv8";
reg = < 7 >;
enable-method = "spin-table";
cpu-release-addr = <0 0x8000fff8>;
};
};
virt-encoder {
compatible = "drm,virtual-encoder";
port {
dp0_virt_input: endpoint@0 {
remote-endpoint = <&dp0_output>;
};
};
display-timings {
native-mode = <&timing0>;
timing0: timing_1080p60 {
/* 1920x1080-60 */
clock-frequency = <148500000>;
hactive = <1920>;
vactive = <1080>;
hfront-porch = <148>;
hback-porch = <88>;
hsync-len = <44>;
vfront-porch = <36>;
vback-porch = <4>;
vsync-len = <5>;
};
};
};
};
&dp0 {
status = "ok"
port {
dp0_output: endpoint@0 {
remote-endpoint = <&dp0_virt_input>;
};
};
};
@@ -1,46 +0,0 @@
/*
* Copyright (c) 2015-2018 ARM Limited
* All rights reserved
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Andreas Sandberg
*/
/include/ "vexpress_gem5_v2_base.dtsi"
/ {
/* The display processor needs custom configuration to setup its
* output ports. Disable it by default in the platform until the
* DT bindings have stabilize.
*/
dp0: hdlcd@2b000000 {
compatible = "arm,hdlcd";
reg = <0x0 0x2b000000 0x0 0x1000>;
interrupts = <0 63 4>;
clocks = <&osc_pxl>;
clock-names = "pxlclk";
status = "disabled";
};
};
@@ -1,202 +0,0 @@
/*
* Copyright (c) 2015-2017, 2019 ARM Limited
* All rights reserved
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met: redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer;
* redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution;
* neither the name of the copyright holders nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Authors: Andreas Sandberg
*/
/ {
arm,hbi = <0x0>;
arm,vexpress,site = <0xf>;
interrupt-parent = <&gic>;
#address-cells = <2>;
#size-cells = <2>;
gic: interrupt-controller@2c000000 {
compatible = "arm,gic-v3";
#interrupt-cells = <0x3>;
#address-cells = <0x2>;
ranges;
interrupt-controller;
redistributor-stride = <0x0 0x40000>; // 256kB stride
reg = <0x0 0x2c000000 0x0 0x10000
0x0 0x2c010000 0x0 0x2000000 // room for 128 redistributors using 128K each (256K strided...)
0x0 0x0 0x0 0x0>;
interrupts = <1 9 0xf04>;
#size-cells = <0x2>;
linux,phandle = <0x1>;
phandle = <0x1>;
gic-its@2e010000 {
compatible = "arm,gic-v3-its";
msi-controller;
#msi-cells = <1>;
reg = <0x0 0x2e010000 0 0x20000>;
};
};
timer {
compatible = "arm,cortex-a15-timer",
"arm,armv7-timer";
interrupts = <1 13 0xf08>,
<1 14 0xf08>,
<1 11 0xf08>,
<1 10 0xf08>;
clocks = <&osc_sys>;
clock-names="apb_pclk";
};
pci {
compatible = "pci-host-ecam-generic";
device_type = "pci";
#address-cells = <0x3>;
#size-cells = <0x2>;
#interrupt-cells = <0x1>;
reg = <0x0 0x30000000 0x0 0x10000000>;
ranges = <0x01000000 0x0 0x00000000 0x0 0x2f000000 0x0 0x00010000>,
<0x02000000 0x0 0x40000000 0x0 0x40000000 0x0 0x40000000>;
/*
child unit address, #cells = #address-cells
child interrupt specifier, #cells = #interrupt-cells (INTA = 1, INTB = 2, INTC = 3 and INTD = 4)
interrupt-parent, phandle
parent unit address, #cells = #address-cells@gic
parent interrupt specifier, #cells = #interrupt-cells@gic
*/
interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0x0 0x0 0x44 0x1
0x800 0x0 0x0 0x1 &gic 0x0 0x0 0x0 0x45 0x1
0x1000 0x0 0x0 0x1 &gic 0x0 0x0 0x0 0x46 0x1
0x1800 0x0 0x0 0x1 &gic 0x0 0x0 0x0 0x47 0x1>;
interrupt-map-mask = <0x001800 0x0 0x0 0x0>;
dma-coherent;
};
kmi@1c060000 {
compatible = "arm,pl050", "arm,primecell";
reg = <0x0 0x1c060000 0x0 0x1000>;
interrupts = <0 12 4>;
clocks = <&v2m_clk24mhz>, <&osc_smb>;
clock-names = "KMIREFCLK", "apb_pclk";
};
kmi@1c070000 {
compatible = "arm,pl050", "arm,primecell";
reg = <0x0 0x1c070000 0x0 0x1000>;
interrupts = <0 13 4>;
clocks = <&v2m_clk24mhz>, <&osc_smb>;
clock-names = "KMIREFCLK", "apb_pclk";
};
uart0: uart@1c090000 {
compatible = "arm,pl011", "arm,primecell";
reg = <0x0 0x1c090000 0x0 0x1000>;
interrupts = <0 5 4>;
clocks = <&osc_peripheral>, <&osc_smb>;
clock-names = "uartclk", "apb_pclk";
};
rtc@1c170000 {
compatible = "arm,pl031", "arm,primecell";
reg = <0x0 0x1c170000 0x0 0x1000>;
interrupts = <0 4 4>;
clocks = <&osc_smb>;
clock-names = "apb_pclk";
};
v2m_clk24mhz: clk24mhz {
compatible = "fixed-clock";
#clock-cells = <0>;
clock-frequency = <24000000>;
clock-output-names = "v2m:clk24mhz";
};
v2m_sysreg: sysreg@1c010000 {
compatible = "arm,vexpress-sysreg";
reg = <0 0x1c010000 0x0 0x1000>;
gpio-controller;
#gpio-cells = <2>;
};
vio@1c130000 {
compatible = "virtio,mmio";
reg = <0 0x1c130000 0x0 0x1000>;
interrupts = <0 42 4>;
};
vio@1c140000 {
compatible = "virtio,mmio";
reg = <0 0x1c140000 0x0 0x1000>;
interrupts = <0 43 4>;
};
dcc {
compatible = "arm,vexpress,config-bus";
arm,vexpress,config-bridge = <&v2m_sysreg>;
osc_pxl: osc@5 {
compatible = "arm,vexpress-osc";
arm,vexpress-sysreg,func = <1 5>;
freq-range = <23750000 1000000000>;
#clock-cells = <0>;
clock-output-names = "oscclk5";
};
osc_smb: osc@6 {
compatible = "arm,vexpress-osc";
arm,vexpress-sysreg,func = <1 6>;
freq-range = <20000000 50000000>;
#clock-cells = <0>;
clock-output-names = "oscclk6";
};
osc_sys: osc@7 {
compatible = "arm,vexpress-osc";
arm,vexpress-sysreg,func = <1 7>;
freq-range = <20000000 60000000>;
#clock-cells = <0>;
clock-output-names = "oscclk7";
};
};
mcc {
compatible = "arm,vexpress,config-bus";
arm,vexpress,config-bridge = <&v2m_sysreg>;
arm,vexpress,site = <0>;
osc_peripheral: osc@2 {
compatible = "arm,vexpress-osc";
arm,vexpress-sysreg,func = <1 2>;
freq-range = <24000000 24000000>;
#clock-cells = <0>;
clock-output-names = "v2m:oscclk2";
};
};
};
@@ -1,99 +0,0 @@
From 4af28e8e58b6c461a3b85960b222dade8b6891ce Mon Sep 17 00:00:00 2001
From: Andres Freund <andres@anarazel.de>
Date: Wed, 22 Jun 2022 11:19:18 -0700
Subject: [PATCH] init_disassemble_info() signature changes causes compile
failures
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Hi,
binutils changed the signature of init_disassemble_info(), which now causes
perf and bpftool to fail to compile (e.g. on debian unstable).
Relevant binutils commit: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=60a3da00bd5407f07d64dff82a4dae98230dfaac
util/annotate.c: In function symbol__disassemble_bpf:
util/annotate.c:1765:9: error: too few arguments to function init_disassemble_info
1765 | init_disassemble_info(&info, s,
| ^~~~~~~~~~~~~~~~~~~~~
In file included from util/annotate.c:1718:
/usr/include/dis-asm.h:472:13: note: declared here
472 | extern void init_disassemble_info (struct disassemble_info *dinfo, void *stream,
| ^~~~~~~~~~~~~~~~~~~~~
with equivalent failures in
tools/bpf/bpf_jit_disasm.c
tools/bpf/bpftool/jit_disasm.c
The fix is easy enough, add a wrapper around fprintf() that conforms to the
new signature.
However I assume the necessary feature test and wrapper should only be added
once? I don't know the kernel stuff well enough to choose the right structure
here.
Attached is my local fix for perf. Obviously would need work to be a real
solution.
Greetings,
Andres Freund
---
binutils 2.39 changed the signature of init_disassemble_info(),
which now causes perf and bpftool to fail to compile.
Relevant binutils commit: [1]
There is a proper fix in development upstream[2].
This is a work-around for older kernels.
[1] https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=60a3da00bd5407f07d64dff82a4dae98230dfaac
[2] https://patchwork.kernel.org/project/netdevbpf/cover/20220801013834.156015-1-andres@anarazel.de/
Upstream-Status: Pending
Signed-off-by: Anton Antonov <Anton.Antonov@arm.com>
tools/perf/util/annotate.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
index 0c5e4ce390ef..1151c029f714 100644
--- a/tools/perf/util/annotate.c
+++ b/tools/perf/util/annotate.c
@@ -1708,6 +1708,18 @@ static int dso__disassemble_filename(struct dso *dso, char *filename, size_t fil
#include <bfd.h>
#include <dis-asm.h>
+static int fprintf_styled(void *, enum disassembler_style, const char* fmt, ...)
+{
+ va_list args;
+ int r;
+
+ va_start(args, fmt);
+ r = vprintf(fmt, args);
+ va_end(args);
+
+ return r;
+}
+
static int symbol__disassemble_bpf(struct symbol *sym,
struct annotate_args *args)
{
@@ -1750,7 +1762,8 @@ static int symbol__disassemble_bpf(struct symbol *sym,
goto out;
}
init_disassemble_info(&info, s,
- (fprintf_ftype) fprintf);
+ (fprintf_ftype) fprintf,
+ fprintf_styled);
info.arch = bfd_get_arch(bfdf);
info.mach = bfd_get_mach(bfdf);
--
2.30.2
@@ -1,11 +0,0 @@
define KMACHINE gem5-arm64
define KTYPE standard
define KARCH arm64
include ktypes/standard/standard.scc
include gem5-arm64.scc
# default policy for standard kernels
#include features/latencytop/latencytop.scc
#include features/profiling/profiling.scc
@@ -1,14 +0,0 @@
include features/input/input.scc
include features/net/net.scc
include cfg/timer/no_hz.scc
kconf hardware gem5-arm64/gem5-arm64-board.cfg
kconf hardware gem5-arm64/gem5-arm64-drm.cfg
kconf hardware gem5-arm64/gem5-arm64-net.cfg
kconf hardware gem5-arm64/gem5-arm64-rtc.cfg
kconf hardware gem5-arm64/gem5-arm64-serial.cfg
kconf hardware gem5-arm64/gem5-arm64-virtio.cfg
kconf hardware gem5-arm64/gem5-arm64-cfi.cfg
kconf hardware gem5-arm64/gem5-arm64-virtio.cfg
kconf hardware gem5-arm64/gem5-arm64-pci.cfg
kconf hardware gem5-arm64/gem5-arm64-pata.cfg
@@ -1,23 +0,0 @@
CONFIG_ARM64=y
CONFIG_ARCH_VEXPRESS=y
CONFIG_SMP=y
CONFIG_NR_CPUS=256
CONFIG_HOTPLUG_CPU=y
CONFIG_REGULATOR=y
CONFIG_REGULATOR_FIXED_VOLTAGE=y
CONFIG_CPU_IDLE=y
CONFIG_ARM_CPUIDLE=y
CONFIG_VEXPRESS_CONFIG=y
# Keyboard over AMBA
CONFIG_SERIO=y
CONFIG_SERIO_AMBAKMI=y
CONFIG_MFD_VEXPRESS_SYSREG=y
# Turn off RAID to speed up boot
CONFIG_MD=n
CONFIG_BTRFS_FS=n
@@ -1,3 +0,0 @@
# CFI Flash
CONFIG_MTD=y
CONFIG_MTD_CFI=y
@@ -1,4 +0,0 @@
CONFIG_DRM=y
CONFIG_DRM_HDLCD=y
CONFIG_FB=y
CONFIG_FB_ARMCLCD=y
@@ -1,2 +0,0 @@
CONFIG_SMSC911X=y
CONFIG_SMC91X=y
@@ -1,12 +0,0 @@
CONFIG_ATA=y
CONFIG_ATA_GENERIC=y
CONFIG_PATA_PLATFORM=y
CONFIG_PATA_OF_PLATFORM=y
CONFIG_SATA_AHCI=y
CONFIG_SATA_AHCI_PLATFORM=y
CONFIG_ATA_PIIX=y
CONFIG_PATA_OLDPIIX=y
CONFIG_SCSI=y
CONFIG_SCSI_DMA=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_SG=y
@@ -1,2 +0,0 @@
CONFIG_PCI=y
CONFIG_PCI_HOST_GENERIC=y
@@ -1,2 +0,0 @@
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_PL031=y
@@ -1,3 +0,0 @@
CONFIG_SERIAL_AMBA_PL011=y
CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST=y
@@ -1,9 +0,0 @@
CONFIG_VIRTIO=y
CONFIG_VIRTIO_MMIO=y
CONFIG_BLOCK=y
CONFIG_VIRTIO_BLK=y
CONFIG_BLK_MQ_VIRTIO=y
CONFIG_SCSI_VIRTIO=y
CONFIG_VIRTIO_BLK_SCSI=y
CONFIG_VIRTIO_PCI=y
CONFIG_VIRTIO_PCI_LEGACY=y
@@ -1,12 +0,0 @@
FILESEXTRAPATHS:prepend:gem5-arm64 := "${THISDIR}:${THISDIR}/files:"
COMPATIBLE_MACHINE:gem5-arm64 = "gem5-arm64"
KMACHINE:gem5-arm64 = "gem5-arm64"
SRC_URI:append:gem5-arm64 = " file://gem5-kmeta;type=kmeta;name=gem5-kmeta;destsuffix=gem5-kmeta \
file://dts/gem5-arm64;subdir=add-files \
file://init_disassemble_info-signature-changes-causes-compile-failures.patch"
do_patch:append:gem5-arm64() {
tar -C ${WORKDIR}/add-files/dts -cf - gem5-arm64 | \
tar -C arch/arm64/boot/dts -xf -
}
@@ -1,25 +0,0 @@
KBRANCH ?= "v5.4/standard/base"
require recipes-kernel/linux/linux-yocto.inc
SRCREV_machine ?= "8a59dfded81659402005acfb06fbb00b71c8ce86"
SRCREV_meta ?= "e8c675c7e11fbd96cd812dfb9f4f6fb6f92b6abb"
SRC_URI = "git://git.yoctoproject.org/linux-yocto.git;name=machine;branch=${KBRANCH}; \
git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-5.4;destsuffix=${KMETA} \
file://0001-lib-build_OID_registry-fix-reproducibility-issues.patch \
file://0002-vt-conmakehash-improve-reproducibility.patch \
"
LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
LINUX_VERSION ?= "5.4.205"
DEPENDS += "openssl-native util-linux-native"
PV = "${LINUX_VERSION}+git${SRCPV}"
KMETA = "kernel-meta"
KCONF_BSP_AUDIT_LEVEL = "1"
# Functionality flags
KERNEL_FEATURES:append = " ${KERNEL_EXTRA_FEATURES}"
@@ -1 +0,0 @@
require ${@bb.utils.contains('DISTRO_FEATURES', 'virtualization', 'recipes-kernel/linux/linux-yocto_virtualization.inc', '', d)}
+1 -1
View File
@@ -56,7 +56,7 @@ def get_url_for_patch(layer: str, localpath: pathlib.Path, d) -> str:
# TODO: assumes default branch
if layer == "core":
return f"https://git.openembedded.org/openembedded-core/tree/meta/{relative}"
elif layer in ("meta-arm", "meta-arm-bsp", "arm-toolchain", "meta-gem5"):
elif layer in ("meta-arm", "meta-arm-bsp", "arm-toolchain"):
return f"https://git.yoctoproject.org/meta-arm/tree/{layer}/{relative}"
else:
print(f"WARNING: Don't know web URL for layer {layer}", file=sys.stderr)