From 497f2c06b020f1edfb1cef3efbc2b73dac9b7efd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= Date: Mon, 24 Feb 2025 14:38:14 +0100 Subject: [PATCH 1/3] config: add virt32/64_fb_defconfig based on virt32/64_defconfig --- so3/configs/virt32_fb_defconfig | 86 ++++++++++++++++++++++++++++++++ so3/configs/virt64_fb_defconfig | 87 +++++++++++++++++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 so3/configs/virt32_fb_defconfig create mode 100644 so3/configs/virt64_fb_defconfig diff --git a/so3/configs/virt32_fb_defconfig b/so3/configs/virt32_fb_defconfig new file mode 100644 index 0000000000..1d52fa6161 --- /dev/null +++ b/so3/configs/virt32_fb_defconfig @@ -0,0 +1,86 @@ +CONFIG_ARCH_ARM32=y +# CONFIG_ARCH_ARM64 is not set +# CONFIG_SO3VIRT is not set +CONFIG_ARCH="arm32" +CONFIG_CROSS_COMPILE="arm-none-eabi-" +# CONFIG_ARM_TRUSTZONE is not set + +# +# Platform +# +CONFIG_KERNEL_VADDR=0xc0000000 +CONFIG_VIRT32=y +# CONFIG_RPI4 is not set +# end of Platform + +# CONFIG_THREAD_ENV is not set +CONFIG_PROC_ENV=y + +# +# Kernel & CPU features +# +# CONFIG_SMP is not set +CONFIG_NR_CPUS=1 +CONFIG_HZ=100 +CONFIG_SCHED_FLIP_SCHEDFREQ=30 +# end of Kernel & CPU features + +# +# SO3 Scheduling configuration +# +CONFIG_SCHED_RR=y +# CONFIG_SCHED_PRIO is not set +CONFIG_SCHED_FREQ_PREEMPTION=y +# end of SO3 Scheduling configuration + +# +# Drivers +# +CONFIG_UART=y +CONFIG_IO_MAPPING_BASE=0xe0000000 +# CONFIG_I2C is not set +# CONFIG_NET is not set +CONFIG_FB=y +CONFIG_INPUT=y +# CONFIG_NS16550 is not set +CONFIG_PL011_UART=y +CONFIG_UART_LL_PADDR=0x9000000 +# CONFIG_MMC is not set +CONFIG_RAMDEV=y +# CONFIG_SP804 is not set +CONFIG_ARM_TIMER=y +CONFIG_GIC=y +CONFIG_PL111_CLCD=y +# CONFIG_QEMU_RAMFB is not set +CONFIG_PL050_KMI=y +# end of Drivers + +# +# SO3 Applications +# +# CONFIG_APP_SAMPLE is not set +# CONFIG_APP_REFSO3 is not set +# end of SO3 Applications + +# +# Filesystems +# +CONFIG_FS_FAT=y +# CONFIG_ROOTFS_NONE is not set +# CONFIG_ROOTFS_MMC is not set +CONFIG_ROOTFS_RAMDEV=y +# end of Filesystems + +# +# IPC +# +CONFIG_IPC_SIGNAL=y +CONFIG_IPC_PIPE=y +# end of IPC + +CONFIG_HEAP_SIZE=32 +# CONFIG_RTOS is not set +# CONFIG_AVZ is not set +# CONFIG_SOO is not set +CONFIG_MMU=y +CONFIG_DEBUG_PRINTK=y diff --git a/so3/configs/virt64_fb_defconfig b/so3/configs/virt64_fb_defconfig new file mode 100644 index 0000000000..236a45608a --- /dev/null +++ b/so3/configs/virt64_fb_defconfig @@ -0,0 +1,87 @@ +# CONFIG_ARCH_ARM32 is not set +CONFIG_ARCH_ARM64=y +# CONFIG_SO3VIRT is not set +CONFIG_ARCH="arm64" +CONFIG_CROSS_COMPILE="aarch64-none-linux-gnu-" +# CONFIG_ARM_TRUSTZONE is not set +CONFIG_KERNEL_VADDR=0xffff800000000000 + +# +# Platform +# +CONFIG_VIRT64=y +# CONFIG_RPI4_64 is not set +# CONFIG_VA_BITS_39 is not set +CONFIG_VA_BITS_48=y +# end of Platform + +# CONFIG_THREAD_ENV is not set +CONFIG_PROC_ENV=y + +# +# Kernel & CPU features +# +# CONFIG_SMP is not set +CONFIG_NR_CPUS=1 +CONFIG_HZ=100 +CONFIG_SCHED_FLIP_SCHEDFREQ=30 +# end of Kernel & CPU features + +# +# SO3 Scheduling configuration +# +CONFIG_SCHED_RR=y +# CONFIG_SCHED_PRIO is not set +CONFIG_SCHED_FREQ_PREEMPTION=y +# end of SO3 Scheduling configuration + +# +# Drivers +# +CONFIG_UART=y +CONFIG_IO_MAPPING_BASE=0xffff900000000000 +# CONFIG_I2C is not set +# CONFIG_NET is not set +CONFIG_FB=y +CONFIG_INPUT=y +# CONFIG_NS16550 is not set +CONFIG_PL011_UART=y +CONFIG_UART_LL_PADDR=0x09000000 +# CONFIG_MMC is not set +CONFIG_RAMDEV=y +CONFIG_ARM_TIMER=y +CONFIG_GIC=y +CONFIG_PL111_CLCD=y +# CONFIG_QEMU_RAMFB is not set +CONFIG_PL050_KMI=y +# end of Drivers + +# +# SO3 Applications +# +CONFIG_APP_SAMPLE=y +# CONFIG_APP_REFSO3 is not set +# end of SO3 Applications + +# +# Filesystems +# +CONFIG_FS_FAT=y +# CONFIG_ROOTFS_NONE is not set +# CONFIG_ROOTFS_MMC is not set +CONFIG_ROOTFS_RAMDEV=y +# end of Filesystems + +# +# IPC +# +CONFIG_IPC_SIGNAL=y +CONFIG_IPC_PIPE=y +# end of IPC + +CONFIG_HEAP_SIZE=8 +# CONFIG_RTOS is not set +# CONFIG_AVZ is not set +# CONFIG_SOO is not set +CONFIG_MMU=y +# CONFIG_DEBUG_PRINTK is not set From 809f7e1f1f21d6da81b793ad45dc11c11eac9855 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= Date: Mon, 24 Feb 2025 14:40:27 +0100 Subject: [PATCH 2/3] ci: use virtXX_fb configs instead of virtXX configs --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 18b08887d2..27ed015b31 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -14,8 +14,9 @@ jobs: strategy: fail-fast: false matrix: - CONFIG: ['virt32_defconfig', - 'virt64_defconfig', + # We use the virtXX_fb configs as they're based on the normal virtXX configs with aditional fb support + CONFIG: ['virt32_fb_defconfig', + 'virt64_fb_defconfig', 'virt32_lvperf_defconfig', 'virt64_lvperf_defconfig' ] From d8d64783b018bafd3bda06f1bb3874c80ca4256d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= Date: Wed, 5 Mar 2025 19:10:41 +0100 Subject: [PATCH 3/3] fix: add missing argument to mmap callback --- so3/devices/fb/virtfb.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/so3/devices/fb/virtfb.c b/so3/devices/fb/virtfb.c index 4176fe69f6..f79a22b28b 100644 --- a/so3/devices/fb/virtfb.c +++ b/so3/devices/fb/virtfb.c @@ -30,11 +30,13 @@ typedef struct { uint32_t hres, vres; } virtfb_priv_t; -static void *fb_mmap(int fd, addr_t virt_addr, uint32_t page_count) +static void *fb_mmap(int fd, addr_t virt_addr, uint32_t page_count, off_t offset) { struct devclass *dev = devclass_by_fd(fd); virtfb_priv_t *priv = (virtfb_priv_t *)devclass_get_priv(dev); + (void)offset; + priv->vaddr = malloc(page_count * PAGE_SIZE); BUG_ON(!priv->vaddr);