From a67bc596864c5e4ef38c82f63d24c30ec2799571 Mon Sep 17 00:00:00 2001 From: Sebastian Sumpf Date: Fri, 19 Jan 2024 12:47:12 +0100 Subject: [PATCH] virt_linux: add arm_v6 also split into arm_v(6|7|8) issue #5095 --- .../lib/import/import-virt_lx_emul.mk | 22 ++- .../mk/spec/arm_v7/virt_linux_generated.mk | 3 + .../recipes/api/virt_linux/content.mk | 7 +- .../spec/arm_v6/lx_emul/initcall_order.h | 175 ++++++++++++++++++ .../{arm => arm_v7}/lx_emul/initcall_order.h | 0 .../lx_emul/initcall_order.h | 0 .../spec/{arm_64 => arm_v8}/dummies_arch.c | 0 .../src/virt_linux/arm_v6/target.inc | 8 + .../src/virt_linux/{arm => arm_v6}/target.mk | 3 +- .../src/virt_linux/arm_v7/target.inc | 7 + .../dde_linux/src/virt_linux/arm_v7/target.mk | 41 ++++ .../virt_linux/{arm_64 => arm_v8}/target.mk | 2 +- 12 files changed, 256 insertions(+), 12 deletions(-) create mode 100644 repos/dde_linux/src/include/virt_linux/spec/arm_v6/lx_emul/initcall_order.h rename repos/dde_linux/src/include/virt_linux/spec/{arm => arm_v7}/lx_emul/initcall_order.h (100%) rename repos/dde_linux/src/include/virt_linux/spec/{arm_64 => arm_v8}/lx_emul/initcall_order.h (100%) rename repos/dde_linux/src/lib/lx_emul/virt/spec/{arm_64 => arm_v8}/dummies_arch.c (100%) create mode 100644 repos/dde_linux/src/virt_linux/arm_v6/target.inc rename repos/dde_linux/src/virt_linux/{arm => arm_v6}/target.mk (95%) create mode 100644 repos/dde_linux/src/virt_linux/arm_v7/target.inc create mode 100644 repos/dde_linux/src/virt_linux/arm_v7/target.mk rename repos/dde_linux/src/virt_linux/{arm_64 => arm_v8}/target.mk (98%) 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 718caa5ac5..4800e2dbdf 100644 --- a/repos/dde_linux/lib/import/import-virt_lx_emul.mk +++ b/repos/dde_linux/lib/import/import-virt_lx_emul.mk @@ -17,11 +17,14 @@ endif ifeq ($(filter-out $(SPECS),x86_64),) INC_DIR += $(VIRT_LINUX_INCLUDE_DIR)/spec/x86_64 endif -ifeq ($(filter-out $(SPECS),arm),) - INC_DIR += $(VIRT_LINUX_INCLUDE_DIR)/spec/arm +ifeq ($(filter-out $(SPECS),arm_v6),) + INC_DIR += $(VIRT_LINUX_INCLUDE_DIR)/spec/arm_v6 endif -ifeq ($(filter-out $(SPECS),arm_64),) - INC_DIR += $(VIRT_LINUX_INCLUDE_DIR)/spec/arm_64 +ifeq ($(filter-out $(SPECS),arm_v7),) + INC_DIR += $(VIRT_LINUX_INCLUDE_DIR)/spec/arm_v7 +endif +ifeq ($(filter-out $(SPECS),arm_v8),) + INC_DIR += $(VIRT_LINUX_INCLUDE_DIR)/spec/arm_v8 endif -include $(call select_from_repositories,lib/import/import-lx_emul_common.inc) @@ -41,9 +44,12 @@ ifeq ($(filter-out $(SPECS),x86),) # CC_DEF += -DARCH_DMA_MINALIGN=16 -DARCH_SLAB_MINALIGN=1 endif -ifeq ($(filter-out $(SPECS),arm_64),) - SRC_C += lx_emul/virt/spec/arm_64/dummies_arch.c -endif -ifeq ($(filter-out $(SPECS),arm),) +ifeq ($(filter-out $(SPECS),arm_v6),) SRC_C += lx_emul/virt/spec/arm/dummies_arch.c endif +ifeq ($(filter-out $(SPECS),arm_v7),) + SRC_C += lx_emul/virt/spec/arm/dummies_arch.c +endif +ifeq ($(filter-out $(SPECS),arm_v8),) + SRC_C += lx_emul/virt/spec/arm_v8/dummies_arch.c +endif diff --git a/repos/dde_linux/lib/mk/spec/arm_v7/virt_linux_generated.mk b/repos/dde_linux/lib/mk/spec/arm_v7/virt_linux_generated.mk index 95b15995bb..812c7bb440 100644 --- a/repos/dde_linux/lib/mk/spec/arm_v7/virt_linux_generated.mk +++ b/repos/dde_linux/lib/mk/spec/arm_v7/virt_linux_generated.mk @@ -1,3 +1,6 @@ LINUX_ARCH=arm +# arm_v7 specific kernel configuration +include $(REP_DIR)/src/virt_linux/arm_v7/target.inc + include $(REP_DIR)/lib/mk/virt_linux_generated.inc diff --git a/repos/dde_linux/recipes/api/virt_linux/content.mk b/repos/dde_linux/recipes/api/virt_linux/content.mk index f100ebfc2b..97087e9793 100644 --- a/repos/dde_linux/recipes/api/virt_linux/content.mk +++ b/repos/dde_linux/recipes/api/virt_linux/content.mk @@ -4,8 +4,9 @@ MIRRORED_FROM_REP_DIR := lib/import/import-lx_emul_common.inc \ lib/import/import-virt_lx_emul.mk \ - lib/mk/spec/arm/virt_linux_generated.mk \ - lib/mk/spec/arm_64/virt_linux_generated.mk \ + lib/mk/spec/arm_v6/virt_linux_generated.mk \ + lib/mk/spec/arm_v7/virt_linux_generated.mk \ + lib/mk/spec/arm_v8/virt_linux_generated.mk \ lib/mk/spec/x86_32/virt_linux_generated.mk \ lib/mk/spec/x86_64/virt_linux_generated.mk \ lib/mk/virt_linux_generated.inc \ @@ -20,6 +21,8 @@ MIRRORED_FROM_REP_DIR := lib/import/import-lx_emul_common.inc \ src/lib/lx_emul \ src/lib/lx_kit \ src/virt_linux/target.inc \ + src/virt_linux/arm_v6/target.inc \ + src/virt_linux/arm_v7/target.inc \ src/include/lx_user content: $(MIRRORED_FROM_REP_DIR) diff --git a/repos/dde_linux/src/include/virt_linux/spec/arm_v6/lx_emul/initcall_order.h b/repos/dde_linux/src/include/virt_linux/spec/arm_v6/lx_emul/initcall_order.h new file mode 100644 index 0000000000..5bc22c62de --- /dev/null +++ b/repos/dde_linux/src/include/virt_linux/spec/arm_v6/lx_emul/initcall_order.h @@ -0,0 +1,175 @@ +/* + * \brief Array defining order of Linux Kernel initcalls + * \author Automatically generated file - do no edit + * \date 2024-01-16 + */ + +#pragma once + +static const char * lx_emul_initcall_order[] = { + "__initcall_allocate_overflow_stacksearly", + "__initcall_start", + "__initcall_init_static_idmapearly", + "__initcall_spawn_ksoftirqdearly", + "__initcall_migration_initearly", + "__initcall_srcu_bootup_announceearly", + "__initcall_rcu_sysrq_initearly", + "__initcall_check_cpu_stall_initearly", + "__initcall_rcu_spawn_gp_kthreadearly", + "__initcall_cpu_stop_initearly", + "__initcall_irq_work_init_threadsearly", + "__initcall_init_zero_pfnearly", + "__initcall_dummy_timer_registerearly", + "__initcall_init_mmap_min_addr0", + "__initcall_pci_realloc_setup_params0", + "__initcall_inet_frag_wq_init0", + "__initcall_ptrace_break_init1", + "__initcall_v6_userpage_init1", + "__initcall_ksysfs_init1", + "__initcall_rcu_set_runtime_mode1", + "__initcall_init_jiffies_clocksource1", + "__initcall_init_elf_binfmt1", + "__initcall_virtio_init1", + "__initcall_free_raw_capacity1", + "__initcall_sock_init1", + "__initcall_net_defaults_init1", + "__initcall_init_default_flow_dissectors1", + "__initcall_netlink_proto_init1", + "__initcall_genl_init1", + "__initcall_atomic_pool_init2", + "__initcall_bdi_class_init2", + "__initcall_mm_sysfs_init2", + "__initcall_init_per_zone_wmark_min2", + "__initcall_pcibus_class_init2", + "__initcall_pci_driver_init2", + "__initcall_tty_class_init2", + "__initcall_vtconsole_class_init2", + "__initcall_devlink_class_init2", + "__initcall_software_node_init2", + "__initcall_kobject_uevent_init2", + "__initcall_gate_vma_init3", + "__initcall_customize_machine3", + "__initcall_exceptions_init3", + "__initcall_of_platform_default_populate_init3s", + "__initcall_topology_init4", + "__initcall_uid_cache_init4", + "__initcall_user_namespace_sysctl_init4", + "__initcall_oom_init4", + "__initcall_default_bdi_init4", + "__initcall_percpu_enable_async4", + "__initcall_kcompactd_init4", + "__initcall_init_reserve_notifier4", + "__initcall_init_admin_reserve4", + "__initcall_init_user_reserve4", + "__initcall_aes_init4", + "__initcall_prng_mod_init4", + "__initcall_misc_init4", + "__initcall_register_cpu_capacity_sysctl4", + "__initcall_phy_init4", + "__initcall_usb_common_init4", + "__initcall_usb_init4", + "__initcall_input_init4", + "__initcall_leds_init4", + "__initcall_net_dev_init4", + "__initcall_neigh_init4", + "__initcall_fib_notifier_init4", + "__initcall_ethnl_init4", + "__initcall_nexthop_init4", + "__initcall_vsprintf_init_hashval4", + "__initcall_alignment_init5", + "__initcall_iomem_init_inode5", + "__initcall_clocksource_done_booting5", + "__initcall_init_pipe_fs5", + "__initcall_anon_inode_init5", + "__initcall_init_ramfs_fs5", + "__initcall_chr_dev_init5", + "__initcall_hwrng_modinit5", + "__initcall_eth_offload_init5", + "__initcall_inet_init5", + "__initcall_ipv4_offload_init5", + "__initcall_ipv6_offload_init5", + "__initcall_pci_apply_final_quirks5s", + "__initcall_populate_rootfsrootfs", + "__initcall_chacha_simd_mod_init6", + "__initcall_arm_poly1305_mod_init6", + "__initcall_timekeeping_init_ops6", + "__initcall_alarmtimer_init6", + "__initcall_sched_clock_syscore_init6", + "__initcall_kswapd_init6", + "__initcall_mm_compute_batch_init6", + "__initcall_workingset_init6", + "__initcall_fcntl_init6", + "__initcall_start_dirtytime_writeback6", + "__initcall_init_devpts_fs6", + "__initcall_jent_mod_init6", + "__initcall_blake2s_mod_init6", + "__initcall_chacha20poly1305_init6", + "__initcall_curve25519_init6", + "__initcall_percpu_counter_startup6", + "__initcall_simple_pm_bus_driver_init6", + "__initcall_of_fixed_factor_clk_driver_init6", + "__initcall_of_fixed_clk_driver_init6", + "__initcall_gpio_clk_driver_init6", + "__initcall_virtio_pci_driver_init6", + "__initcall_n_null_init6", + "__initcall_pty_init6", + "__initcall_virtio_console_init6", + "__initcall_timeriomem_rng_driver_init6", + "__initcall_topology_sysfs_init6", + "__initcall_cacheinfo_sysfs_init6", + "__initcall_wg_mod_init6", + "__initcall_blackhole_netdev_init6", + "__initcall_phylink_init6", + "__initcall_phy_module_init6", + "__initcall_fixed_mdio_bus_init6", + "__initcall_phy_module_init6", + "__initcall_virtio_net_driver_init6", + "__initcall_asix_driver_init6", + "__initcall_ax88179_178a_driver_init6", + "__initcall_cdc_driver_init6", + "__initcall_smsc95xx_driver_init6", + "__initcall_usbnet_init6", + "__initcall_cdc_ncm_driver_init6", + "__initcall_cdc_mbim_driver_init6", + "__initcall_r8153_ecm_driver_init6", + "__initcall_net_failover_init6", + "__initcall_wdm_driver_init6", + "__initcall_input_leds_init6", + "__initcall_evdev_init6", + "__initcall_hid_init6", + "__initcall_hid_generic_init6", + "__initcall_apple_driver_init6", + "__initcall_ch_driver_init6", + "__initcall_holtek_kbd_driver_init6", + "__initcall_holtek_mouse_driver_init6", + "__initcall_holtek_driver_init6", + "__initcall_ms_driver_init6", + "__initcall_hid_init6", + "__initcall_sock_diag_init6", + "__initcall_failover_init6", + "__initcall_gre_offload_init6", + "__initcall_tunnel4_init6", + "__initcall_inet_diag_init6", + "__initcall_tcp_diag_init6", + "__initcall_cubictcp_register6", + "__initcall_inet6_init6", + "__initcall_sit_init6", + "__initcall_init_machine_late7", + "__initcall_swp_emulation_init7", + "__initcall_printk_late_init7", + "__initcall_check_early_ioremap_leak7", + "__initcall_crypto_algapi_init7", + "__initcall_pci_resource_alignment_sysfs_init7", + "__initcall_pci_sysfs_init7", + "__initcall_sync_state_resume_initcall7", + "__initcall_deferred_probe_initcall7", + "__initcall_tcp_congestion_default7", + "__initcall_udp_tunnel_nic_init_module7", + "__initcall_ip_auto_config7", + "__initcall_clk_disable_unused7s", + "__initcall_of_platform_sync_state_init7s", + "__initcall_con_initcon", + "__initcall_end", + "__initcall_hvc_console_initcon", + "END_OF_INITCALL_ORDER_ARRAY_DUMMY_ENTRY" +}; diff --git a/repos/dde_linux/src/include/virt_linux/spec/arm/lx_emul/initcall_order.h b/repos/dde_linux/src/include/virt_linux/spec/arm_v7/lx_emul/initcall_order.h similarity index 100% rename from repos/dde_linux/src/include/virt_linux/spec/arm/lx_emul/initcall_order.h rename to repos/dde_linux/src/include/virt_linux/spec/arm_v7/lx_emul/initcall_order.h diff --git a/repos/dde_linux/src/include/virt_linux/spec/arm_64/lx_emul/initcall_order.h b/repos/dde_linux/src/include/virt_linux/spec/arm_v8/lx_emul/initcall_order.h similarity index 100% rename from repos/dde_linux/src/include/virt_linux/spec/arm_64/lx_emul/initcall_order.h rename to repos/dde_linux/src/include/virt_linux/spec/arm_v8/lx_emul/initcall_order.h 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_v8/dummies_arch.c similarity index 100% rename from repos/dde_linux/src/lib/lx_emul/virt/spec/arm_64/dummies_arch.c rename to repos/dde_linux/src/lib/lx_emul/virt/spec/arm_v8/dummies_arch.c diff --git a/repos/dde_linux/src/virt_linux/arm_v6/target.inc b/repos/dde_linux/src/virt_linux/arm_v6/target.inc new file mode 100644 index 0000000000..c595f5ff2d --- /dev/null +++ b/repos/dde_linux/src/virt_linux/arm_v6/target.inc @@ -0,0 +1,8 @@ +# +# Linux architecture specific kernel configuration +# + +LX_ENABLE += ARCH_MULTI_V6 + +# do not generate thumb instructions +LX_DISABLE += THUMB2_KERNEL DEBUG_PREEMPT diff --git a/repos/dde_linux/src/virt_linux/arm/target.mk b/repos/dde_linux/src/virt_linux/arm_v6/target.mk similarity index 95% rename from repos/dde_linux/src/virt_linux/arm/target.mk rename to repos/dde_linux/src/virt_linux/arm_v6/target.mk index 529f269443..2afd1af11d 100644 --- a/repos/dde_linux/src/virt_linux/arm/target.mk +++ b/repos/dde_linux/src/virt_linux/arm_v6/target.mk @@ -1,5 +1,5 @@ TARGET := arm_virt_linux -REQUIRES := arm +REQUIRES := arm_v6 CUSTOM_TARGET_DEPS := kernel_build.phony @@ -18,6 +18,7 @@ LX_MK_ARGS = ARCH=arm CROSS_COMPILE=$(CROSS_DEV_PREFIX) CC=$(CC) $(LX_MK_REPRODU # # define 'LX_ENABLE' and 'LX_DISABLE' +include $(REP_DIR)/src/virt_linux/arm_v6/target.inc include $(REP_DIR)/src/virt_linux/target.inc # filter for make output of kernel build system diff --git a/repos/dde_linux/src/virt_linux/arm_v7/target.inc b/repos/dde_linux/src/virt_linux/arm_v7/target.inc new file mode 100644 index 0000000000..6046c1fd74 --- /dev/null +++ b/repos/dde_linux/src/virt_linux/arm_v7/target.inc @@ -0,0 +1,7 @@ +# +# Linux architecture specific kernel configuration +# + +# do not generate thumb instructions on ARMv7 platforms +LX_DISABLE += THUMB2_KERNEL ARM_VIRT_EXT DEBUG_PREEMPT + diff --git a/repos/dde_linux/src/virt_linux/arm_v7/target.mk b/repos/dde_linux/src/virt_linux/arm_v7/target.mk new file mode 100644 index 0000000000..10734fab4f --- /dev/null +++ b/repos/dde_linux/src/virt_linux/arm_v7/target.mk @@ -0,0 +1,41 @@ +TARGET := arm_virt_linux +REQUIRES := arm_v7 + +CUSTOM_TARGET_DEPS := kernel_build.phony + +LX_DIR := $(call select_from_ports,linux)/src/linux +PWD := $(shell pwd) + +# options for Linux kernel build to not depend on current time, user and host +LX_MK_REPRODUCIBLE = KBUILD_BUILD_TIMESTAMP=no_timestamp KBUILD_BUILD_USER=genode KBUILD_BUILD_HOST=genode +LX_MK_ARGS = ARCH=arm CROSS_COMPILE=$(CROSS_DEV_PREFIX) CC=$(CC) $(LX_MK_REPRODUCIBLE) + +# +# Linux kernel configuration +# +# Start with 'make tinyconfig', enable/disable options via 'scripts/config', +# and resolve config dependencies via 'make olddefconfig'. +# + +# define 'LX_ENABLE' and 'LX_DISABLE' +include $(REP_DIR)/src/virt_linux/arm_v7/target.inc +include $(REP_DIR)/src/virt_linux/target.inc + +# filter for make output of kernel build system +BUILD_OUTPUT_FILTER = 2>&1 | sed "s/^/ [Linux] /" + +kernel_config.tag: + $(MSG_CONFIG)Linux + $(VERBOSE)$(MAKE) -C $(LX_DIR) O=$(PWD) $(LX_MK_ARGS) tinyconfig $(BUILD_OUTPUT_FILTER) + $(VERBOSE)$(LX_DIR)/scripts/config --file $(PWD)/.config $(addprefix --enable ,$(LX_ENABLE)) + $(VERBOSE)$(LX_DIR)/scripts/config --file $(PWD)/.config $(addprefix --disable ,$(LX_DISABLE)) + $(VERBOSE)$(MAKE) $(LX_MK_ARGS) olddefconfig $(BUILD_OUTPUT_FILTER) + $(VERBOSE)$(MAKE) $(LX_MK_ARGS) prepare $(BUILD_OUTPUT_FILTER) + $(VERBOSE)touch $@ + +# update Linux kernel config on makefile changes +kernel_config.tag: $(MAKEFILE_LIST) + +kernel_build.phony: kernel_config.tag + $(MSG_BUILD)Linux + $(VERBOSE)$(MAKE) $(LX_MK_ARGS) $(BUILD_OUTPUT_FILTER) diff --git a/repos/dde_linux/src/virt_linux/arm_64/target.mk b/repos/dde_linux/src/virt_linux/arm_v8/target.mk similarity index 98% rename from repos/dde_linux/src/virt_linux/arm_64/target.mk rename to repos/dde_linux/src/virt_linux/arm_v8/target.mk index 0fdfa9199a..82c25931bd 100644 --- a/repos/dde_linux/src/virt_linux/arm_64/target.mk +++ b/repos/dde_linux/src/virt_linux/arm_v8/target.mk @@ -1,5 +1,5 @@ TARGET := arm_64_virt_linux -REQUIRES := arm_64 +REQUIRES := arm_v8 CUSTOM_TARGET_DEPS := kernel_build.phony