From e8c1b4f04dde6921277f243694c3b19b5b30f74a Mon Sep 17 00:00:00 2001 From: Jean-Philippe Brucker Date: Mon, 22 Apr 2024 11:31:32 +0100 Subject: [PATCH] feat(qemu): Use common platform support Apart from a couple configuration variables, QEMU doesn't need special platform support anymore, and can use the common arm platform code. Signed-off-by: Jean-Philippe Brucker Change-Id: Ic3368375d35a2e4c0bc4152a5ea6ba2bb96eaf86 --- configs/qemu_virt_defcfg.cmake | 25 +------------------ plat/qemu/src/include/qemu_dram.h | 26 ------------------- plat/qemu/src/include/qemu_private.h | 16 ------------ plat/qemu/src/qemu_granule.c | 37 ---------------------------- plat/qemu/src/qemu_memory.c | 30 ---------------------- 5 files changed, 1 insertion(+), 133 deletions(-) delete mode 100644 plat/qemu/src/include/qemu_dram.h delete mode 100644 plat/qemu/src/include/qemu_private.h delete mode 100644 plat/qemu/src/qemu_granule.c delete mode 100644 plat/qemu/src/qemu_memory.c diff --git a/configs/qemu_virt_defcfg.cmake b/configs/qemu_virt_defcfg.cmake index ccafeab2..d1b964a4 100644 --- a/configs/qemu_virt_defcfg.cmake +++ b/configs/qemu_virt_defcfg.cmake @@ -6,42 +6,19 @@ # # Set the RMM_PLATFORM variable to Cmake cache. # -set(RMM_PLATFORM "qemu" CACHE STRING "platform") +set(RMM_PLATFORM "arm" CACHE STRING "platform") arm_config_option_override(NAME RMM_TOOLCHAIN DEFAULT "gnu") -# -# Width of the virtual address space for the system. -# -arm_config_option_override(NAME VIRT_ADDR_SPACE_WIDTH DEFAULT 38) - # # Set RMM_MAX_SIZE for this platform (24MB) # arm_config_option_override(NAME RMM_MAX_SIZE DEFAULT 0x01800000) -# -# UART Base address. This must be dynamically discovered in future. -# Use NS UART. -# -arm_config_option_override(NAME RMM_UART_ADDR DEFAULT 0x09000000) - -# -# Extra memory regions needed by this platform: one region for UART. -# -arm_config_option_override(NAME PLAT_CMN_EXTRA_MMAP_REGIONS DEFAULT 1) - -# # Maximum number of translation tables allocated by the runtime context # for the translation library. # arm_config_option_override(NAME PLAT_CMN_CTX_MAX_XLAT_TABLES DEFAULT 7) -# -# Disable FPU/SIMD usage in RMM for now. Enabling this causes the Realm guest -# boot to hang, and needs to be investigated. -# -arm_config_option_override(NAME RMM_FPU_USE_AT_REL2 DEFAULT OFF) - # # Maximum number of granules supported. # diff --git a/plat/qemu/src/include/qemu_dram.h b/plat/qemu/src/include/qemu_dram.h deleted file mode 100644 index 9cfde981..00000000 --- a/plat/qemu/src/include/qemu_dram.h +++ /dev/null @@ -1,26 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-3-Clause - * SPDX-FileCopyrightText: Copyright TF-RMM Contributors. - */ - -#ifndef QEMU_DRAM_H -#define QEMU_DRAM_H - -#include -#include -#include - -/* Maximum number of DRAM banks supported */ -#define MAX_DRAM_NUM_BANKS 1UL - -/* QEMU runtime structures */ -struct qemu_dram_layout { - uintptr_t start_addr; - uintptr_t end_addr; - unsigned long num_granules; -}; - -void qemu_set_dram_layout(struct ns_dram_info *plat_dram); -struct qemu_dram_layout *qemu_get_dram_layout(void); - -#endif /* QEMU_DRAM_H */ diff --git a/plat/qemu/src/include/qemu_private.h b/plat/qemu/src/include/qemu_private.h deleted file mode 100644 index 7c571fd9..00000000 --- a/plat/qemu/src/include/qemu_private.h +++ /dev/null @@ -1,16 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-3-Clause - * SPDX-FileCopyrightText: Copyright TF-RMM Contributors. - */ - -#ifndef QEMU_PRIVATE_H -#define QEMU_PRIVATE_H - -/* - * QEMU doesn't emulate the clock or baudrate, so these are arbitrary. - * The virt platform advertises a 24MHz clock to make Linux probe work. - */ -#define QEMU_UART_BAUDRATE 115200 -#define QEMU_UART_CLK_IN_HZ 24000000 - -#endif /* QEMU_PRIVATE_H */ diff --git a/plat/qemu/src/qemu_granule.c b/plat/qemu/src/qemu_granule.c deleted file mode 100644 index ce27098d..00000000 --- a/plat/qemu/src/qemu_granule.c +++ /dev/null @@ -1,37 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-3-Clause - * SPDX-FileCopyrightText: Copyright TF-RMM Contributors. - */ - -#include -#include -#include -#include - -static struct qemu_dram_layout qemu_dram; - -struct qemu_dram_layout *qemu_get_dram_layout(void) -{ - return &qemu_dram; -} - -unsigned long plat_granule_addr_to_idx(unsigned long addr) -{ - if (!GRANULE_ALIGNED(addr)) { - return UINT64_MAX; - } - - if ((addr >= qemu_dram.start_addr) && - (addr <= qemu_dram.end_addr)) { - return (addr - qemu_dram.start_addr) / GRANULE_SIZE; - } - - return UINT64_MAX; -} - -unsigned long plat_granule_idx_to_addr(unsigned long idx) -{ - assert(idx < qemu_dram.num_granules); - - return qemu_dram.start_addr + (idx * GRANULE_SIZE); -} diff --git a/plat/qemu/src/qemu_memory.c b/plat/qemu/src/qemu_memory.c deleted file mode 100644 index ecd18b0c..00000000 --- a/plat/qemu/src/qemu_memory.c +++ /dev/null @@ -1,30 +0,0 @@ -/* - * SPDX-License-Identifier: BSD-3-Clause - * SPDX-FileCopyrightText: Copyright TF-RMM Contributors. - */ - -#include -#include -#include -#include -#include - -void qemu_set_dram_layout(struct ns_dram_info *plat_dram) -{ - uint64_t size; - uintptr_t start; - struct ns_dram_bank *bank_ptr; - struct qemu_dram_layout *qemu_dram = qemu_get_dram_layout(); - - assert(plat_dram->num_banks == 1); - bank_ptr = plat_dram->banks; - - start = bank_ptr->base; - size = bank_ptr->size; - - qemu_dram->start_addr = start; - qemu_dram->end_addr = start + size - 1UL; - qemu_dram->num_granules = size / GRANULE_SIZE; - - flush_dcache_range((uintptr_t)qemu_dram, sizeof(qemu_dram)); -}