Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Testing CI runs for ZCU102 hardware #64

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test-hw.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ name: HW

on:
# needs PR target for secrets access; guard by requiring label
pull_request_target:
pull_request_target: # !! dummy
types: [opened, reopened, synchronize, labeled]

# downgrade permissions to read-only as you would have in a standard PR action
Expand Down
73 changes: 23 additions & 50 deletions apps/Arm/vm_minimal/zcu102/2021_1/devices.camkes
Original file line number Diff line number Diff line change
Expand Up @@ -49,86 +49,59 @@ assembly {

vm0.untyped_mmios = ["0xf9060000:12"]; // Interrupt Controller Virtual CPU interface (Virtual Machine view)

/* The ZCU102 can run different Xilinx releases of Petalinux
* During one release, the PS devices were moved from the "amba" to
* the "axi" bus. The seL4 kernel only needs the device tree to
* allocate untyped resources, so the device tree was never updated.
* However, it's a good idea to match the device tree with the version
* of Petalinux that is running.
*
* This file configures a Petalinux 2021.1 guest VM, meaning a different
* device tree than the seL4 kernel device tree is used as the base for
* guest dtb generation. This version uses the axi bus. Therefore,
* any passthrough or emulated devices on that bus must be listed here
* with the plat_keep_devices, as the VMM will attempt to keep the amba
* bus versions, which do not exist in the 2021.1 base.
*
* The VMM will complain about the /amba/serial device not existing:
* "Non-existing node /amba/serial@ff000000 specified to be kept"
*/
vm0.plat_keep_devices = [
"/__symbols__",
"/aliases",
"/aux_ref_clk",
"/axi/interrupt-controller@f9010000",
"/dcc",
"/dp_aclk",
"/edac",
"/fclk0",
"/fclk1",
"/fclk2",
"/fclk3",
"/fpga-full",
"/pss_ref_clk",
"/gt_crx_ref_clk",
"/ina226-u15",
"/ina226-u16",
"/ina226-u65",
"/ina226-u74",
"/ina226-u75",
"/ina226-u76",
"/ina226-u77",
"/ina226-u78",
"/ina226-u79",
"/ina226-u80",
"/ina226-u81",
"/ina226-u84",
"/ina226-u85",
"/ina226-u86",
"/ina226-u87",
"/ina226-u88",
"/ina226-u92",
"/ina226-u93",
"/pss_alt_ref_clk",
"/aux_ref_clk",
"/video_clk",
"/pmu",
"/psci",
"/pss_alt_ref_clk",
"/pss_ref_clk",
"/ref48M",
"/refhdmi",
"/timer",
"/video_clk",
"/aliases",
"/axi/interrupt-controller@f9010000",
"/axi/serial@ff000000",
];

vm0.plat_keep_devices_and_subtree = [
"/firmware",
"/gpio-keys",
"/leds",
"/zynqmp_ipi",
];

vm0.allow_smc = true;
vm0.allowed_smc_functions = [
SMC_PM_GET_API_VERSION,
SMC_PM_REQUEST_NODE,
SMC_PM_RELEASE_NODE,
SMC_PM_SET_REQUIREMENT,
SMC_PM_INIT_FINALIZE,
SMC_PM_FPGA_GET_STATUS,
SMC_PM_RESET_ASSERT,
SMC_PM_RESET_GET_STATUS,
SMC_PM_MMIO_WRITE,
SMC_PM_MMIO_READ,
SMC_PM_GET_CHIPID,
SMC_PM_PINCTRL_REQUEST,
SMC_PM_PINCTRL_RELEASE,
SMC_PM_PINCTRL_SET_FUNCTION,
SMC_PM_PINCTRL_CONFIG_PARAM_GET,
SMC_PM_PINCTRL_CONFIG_PARAM_SET,
SMC_PM_IOCTL,
SMC_PM_QUERY_DATA,
SMC_PM_CLOCK_ENABLE,
SMC_PM_CLOCK_DISABLE,
SMC_PM_CLOCK_GETSTATE,
SMC_PM_CLOCK_SETDIVIDER,
SMC_PM_CLOCK_GETDIVIDER,
SMC_PM_CLOCK_GETPARENT,
SMC_PM_GET_TRUSTZONE_VERSION,
SMC_IPI_MAILBOX_OPEN,
SMC_IPI_MAILBOX_RELEASE,
SMC_IPI_MAILBOX_ENABLE_IRQ
];
}
}
92 changes: 92 additions & 0 deletions apps/Arm/vm_minimal/zcu102/2022_1/devices.camkes
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
/*
* Copyright 2023, DornerWorks
*
* SPDX-License-Identifier: BSD-2-Clause
*/

#include <plat/smc.h>
#include <configurations/vm.h>

#define VM_INITRD_MAX_SIZE 0x1900000 //25 MB
#define VM_RAM_BASE 0x10000000
#define VM_RAM_SIZE 0x10000000
#define VM_ENTRY_ADDR 0x10080000
#define VM_RAM_OFFSET 0
#define VM_DTB_ADDR 0x12000000
#define VM_INITRD_ADDR 0x13000000

assembly {
composition {}
configuration {

vm0.vm_address_config = {
"ram_base" : VAR_STRINGIZE(VM_RAM_BASE),
"ram_paddr_base" : VAR_STRINGIZE(VM_RAM_BASE),
"ram_size" : VAR_STRINGIZE(VM_RAM_SIZE),
"dtb_addr" : VAR_STRINGIZE(VM_DTB_ADDR),
"initrd_addr" : VAR_STRINGIZE(VM_INITRD_ADDR),
"kernel_entry_addr" : VAR_STRINGIZE(VM_ENTRY_ADDR),
};
vm0.num_vcpus = 4;

/* Extra untyped pool to allow for 256MB of RAM */
vm0.simple_untyped28_pool = 1;

vm0.vm_image_config = {
"kernel_name" : "linux",
"initrd_name" : "linux-initrd",
"dtb_base_name" : "linux-dtb",
"kernel_bootcmdline" : "console=ttyPS0,115200 root=/dev/ram rw earlycon clk_ignore_unused",
"kernel_stdout" : "serial0:115200n8",
"generate_dtb" : true,
"provide_dtb" : false,
"map_one_to_one" : false,
"provide_initrd": true,
"clean_cache" : false,
};

vm0.dtb = dtb([{"path": "/amba/serial@ff000000"} ]);

vm0.untyped_mmios = ["0xf9060000:12"]; // Interrupt Controller Virtual CPU interface (Virtual Machine view)

vm0.plat_keep_devices = [
"/pss_ref_clk",
"/gt_crx_ref_clk",
"/pss_alt_ref_clk",
"/aux_ref_clk",
"/video_clk",
"/pmu",
"/psci",
"/timer",
"/aliases",
"/axi/interrupt-controller@f9010000",
"/axi/serial@ff000000",
];

vm0.plat_keep_devices_and_subtree = [
"/firmware",
];

vm0.allow_smc = true;
vm0.allowed_smc_functions = [
SMC_PM_GET_API_VERSION,
SMC_PM_REQUEST_NODE,
SMC_PM_SET_REQUIREMENT,
SMC_PM_INIT_FINALIZE,
SMC_PM_FPGA_GET_STATUS,
SMC_PM_PINCTRL_REQUEST,
SMC_PM_PINCTRL_SET_FUNCTION,
SMC_PM_PINCTRL_CONFIG_PARAM_GET,
SMC_PM_PINCTRL_CONFIG_PARAM_SET,
SMC_PM_IOCTL,
SMC_PM_QUERY_DATA,
SMC_PM_CLOCK_ENABLE,
SMC_PM_CLOCK_GETSTATE,
SMC_PM_CLOCK_GETDIVIDER,
SMC_PM_CLOCK_GETPARENT,
SMC_PM_GET_TRUSTZONE_VERSION,
SMC_PM_ADD_SUBSYSTEM,
SMC_PM_FEATURE_CHECK,
];
}
}