From 22231c0604706ff2d615efd3f7fd3cf193ab137e Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Wed, 14 Jun 2023 15:34:33 +0200 Subject: [PATCH] virt_lx_emul: adjust dummies for usb_hid/net issue #4958 --- .../lib/import/import-virt_lx_emul.mk | 4 ++ repos/dde_linux/src/app/wireguard/dummies.c | 48 +++++++++++++ .../src/lib/lx_emul/virt/common_dummies.c | 53 ++++---------- .../lib/lx_emul/virt/spec/arm/dummies_arch.c | 71 +++++++++++++++++++ .../lx_emul/virt/spec/arm_64/dummies_arch.c | 5 -- .../dde_linux/src/test/driver_time/dummies.c | 47 ++++++++++++ 6 files changed, 182 insertions(+), 46 deletions(-) create mode 100644 repos/dde_linux/src/lib/lx_emul/virt/spec/arm/dummies_arch.c diff --git a/repos/dde_linux/lib/import/import-virt_lx_emul.mk b/repos/dde_linux/lib/import/import-virt_lx_emul.mk index 5ffee25531..73e5cce748 100644 --- a/repos/dde_linux/lib/import/import-virt_lx_emul.mk +++ b/repos/dde_linux/lib/import/import-virt_lx_emul.mk @@ -25,6 +25,7 @@ endif -include $(call select_from_repositories,lib/import/import-lx_emul_common.inc) SRC_C += lx_emul/shadow/drivers/char/random.c +SRC_C += lx_emul/shadow/kernel/rcu/srcutree.c SRC_C += lx_emul/virt/common_dummies.c SRC_CC += lx_emul/virt/irq.cc SRC_CC += lx_kit/memory_non_dma.cc @@ -40,3 +41,6 @@ endif ifeq ($(filter-out $(SPECS),arm_64),) SRC_C += lx_emul/virt/spec/arm_64/dummies_arch.c endif +ifeq ($(filter-out $(SPECS),arm),) + SRC_C += lx_emul/virt/spec/arm/dummies_arch.c +endif diff --git a/repos/dde_linux/src/app/wireguard/dummies.c b/repos/dde_linux/src/app/wireguard/dummies.c index c2b5d2a24b..e19d632a96 100644 --- a/repos/dde_linux/src/app/wireguard/dummies.c +++ b/repos/dde_linux/src/app/wireguard/dummies.c @@ -15,6 +15,46 @@ #include +extern int __init buses_init(void); +int __init buses_init(void) +{ + lx_emul_trace(__func__); + return 0; +} + + +extern int __init classes_init(void); +int __init classes_init(void) +{ + lx_emul_trace(__func__); + return 0; +} + + +extern int __init devices_init(void); +int __init devices_init(void) +{ + lx_emul_trace(__func__); + return 0; +} + + +#include + +void kvfree(const void * addr) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void update_vsyscall(struct timekeeper * tk) +{ + lx_emul_trace(__func__); +} + + #include const struct ipv6_stub *ipv6_stub = NULL; @@ -151,6 +191,14 @@ void __init net_ns_init(void) } +unsigned long __must_check __arch_copy_to_user(void __user *to, const void *from, unsigned long n); +unsigned long __must_check __arch_copy_to_user(void __user *to, const void *from, unsigned long n) + +{ + lx_emul_trace_and_stop(__func__); +} + + #ifdef CONFIG_ARM64 extern void flush_dcache_page(struct page * page); void flush_dcache_page(struct page * page) diff --git a/repos/dde_linux/src/lib/lx_emul/virt/common_dummies.c b/repos/dde_linux/src/lib/lx_emul/virt/common_dummies.c index ce4c82facc..9bc6a875eb 100644 --- a/repos/dde_linux/src/lib/lx_emul/virt/common_dummies.c +++ b/repos/dde_linux/src/lib/lx_emul/virt/common_dummies.c @@ -13,6 +13,10 @@ #include +#include + +char __start_rodata[] = {}; +char __end_rodata[] = {}; extern int __init platform_bus_init(void); int __init platform_bus_init(void) @@ -39,31 +43,6 @@ int add_random_ready_callback(struct random_ready_callback * rdy) return 0; } - -extern int __init buses_init(void); -int __init buses_init(void) -{ - lx_emul_trace(__func__); - return 0; -} - - -extern int __init classes_init(void); -int __init classes_init(void) -{ - lx_emul_trace(__func__); - return 0; -} - - -extern int __init devices_init(void); -int __init devices_init(void) -{ - lx_emul_trace(__func__); - return 0; -} - - #include int __init early_irq_init(void) @@ -138,25 +117,17 @@ void rcu_sched_clock_irq(int user) } -#include - -void kvfree(const void * addr) -{ - lx_emul_trace_and_stop(__func__); -} - - -#include - -void update_vsyscall(struct timekeeper * tk) -{ - lx_emul_trace(__func__); -} - - #include void ignore_signals(struct task_struct * t) { lx_emul_trace(__func__); } + +#include + +void synchronize_srcu(struct srcu_struct * ssp) +{ + lx_emul_trace_and_stop(__func__); +} + diff --git a/repos/dde_linux/src/lib/lx_emul/virt/spec/arm/dummies_arch.c b/repos/dde_linux/src/lib/lx_emul/virt/spec/arm/dummies_arch.c new file mode 100644 index 0000000000..d9b0ac4680 --- /dev/null +++ b/repos/dde_linux/src/lib/lx_emul/virt/spec/arm/dummies_arch.c @@ -0,0 +1,71 @@ +/** + * \brief Architecture-specific dummy definitions of Linux Kernel functions + * \author Sebastian Sumpf + * \date 2023-07-01 + */ + +/* + * Copyright (C) 2023 Genode Labs GmbH + * + * This file is distributed under the terms of the GNU General Public License + * version 2. + */ + +#include +#include + +bool __init early_init_dt_scan(void * params) +{ + lx_emul_trace(__func__); + return false; +} + + +#include + +void __init unflatten_device_tree(void) +{ + lx_emul_trace(__func__); +} + + +#include + +void __init of_clk_init(const struct of_device_id * matches) +{ + lx_emul_trace(__func__); +} + + +#include + +void __init of_core_init(void) +{ + lx_emul_trace(__func__); +} + + +#include + +void __init irqchip_init(void) +{ + lx_emul_trace(__func__); +} + + +#include + +void __init sched_clock_register(u64 (* read)(void),int bits,unsigned long rate) +{ + lx_emul_trace(__func__); +} + + +#include + +void __init generic_sched_clock_init(void) +{ + lx_emul_trace(__func__); +} + + diff --git a/repos/dde_linux/src/lib/lx_emul/virt/spec/arm_64/dummies_arch.c b/repos/dde_linux/src/lib/lx_emul/virt/spec/arm_64/dummies_arch.c index 054286f06a..2c2e11654d 100644 --- a/repos/dde_linux/src/lib/lx_emul/virt/spec/arm_64/dummies_arch.c +++ b/repos/dde_linux/src/lib/lx_emul/virt/spec/arm_64/dummies_arch.c @@ -29,11 +29,6 @@ bool cpu_have_feature(unsigned int num) u64 vabits_actual; -unsigned long __must_check __arch_copy_to_user(void __user *to, const void *from, unsigned long n) -{ - lx_emul_trace_and_stop(__func__); -} - #include diff --git a/repos/dde_linux/src/test/driver_time/dummies.c b/repos/dde_linux/src/test/driver_time/dummies.c index f53a729f1e..6bd161f00b 100644 --- a/repos/dde_linux/src/test/driver_time/dummies.c +++ b/repos/dde_linux/src/test/driver_time/dummies.c @@ -41,3 +41,50 @@ void skb_init() { lx_emul_trace(__func__); } + + +extern int __init buses_init(void); +int __init buses_init(void) +{ + lx_emul_trace(__func__); + return 0; +} + + +extern int __init classes_init(void); +int __init classes_init(void) +{ + lx_emul_trace(__func__); + return 0; +} + + +extern int __init devices_init(void); +int __init devices_init(void) +{ + lx_emul_trace(__func__); + return 0; +} + + +#include + +void kvfree(const void * addr) +{ + lx_emul_trace_and_stop(__func__); +} + + +#include + +void update_vsyscall(struct timekeeper * tk) +{ + lx_emul_trace(__func__); +} + + +extern unsigned long __must_check __arch_copy_to_user(void __user *to, const void *from, unsigned long n); +unsigned long __must_check __arch_copy_to_user(void __user *to, const void *from, unsigned long n) +{ + lx_emul_trace_and_stop(__func__); +}