From 8cc2662aac8c4daa3925f7831efcb699426a6de6 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 29 Jan 2021 13:48:00 +0100 Subject: [PATCH] Remove support for the Muen separation kernel Fixes #3995 Fixes #3994 --- repos/README | 10 +- repos/base-hw/board/muen/image_link_address | 1 - repos/base-hw/doc/x86_64_muen.txt | 164 ------------ .../base-hw/include/spec/x86_64/muen/sinfo.h | 211 --------------- repos/base-hw/lib/mk/bootstrap-hw.inc | 1 - .../lib/mk/spec/x86_64/bootstrap-hw-muen.mk | 12 - .../lib/mk/spec/x86_64/core-hw-muen.mk | 48 ---- .../base-hw/lib/mk/spec/x86_64/sinfo-muen.mk | 5 - repos/base-hw/patches/muen_ada-bfd.patch | 29 --- repos/base-hw/patches/muen_python2.patch | 31 --- repos/base-hw/ports/muen.hash | 1 - repos/base-hw/ports/muen.port | 21 -- .../recipes/src/base-hw-muen/acpi_target_mk | 7 - .../recipes/src/base-hw-muen/content.mk | 4 - repos/base-hw/recipes/src/base-hw-muen/hash | 1 - .../recipes/src/base-hw-muen/used_apis | 2 - .../spec/x86_64/crt0_translation_table_muen.s | 52 ---- .../bootstrap/spec/x86_64/platform_muen.cc | 57 ---- .../base-hw/src/core/spec/x86_64/muen/board.h | 50 ---- .../x86_64/muen/kernel/thread_exception.cc | 44 ---- .../src/core/spec/x86_64/muen/kernel/vm.cc | 68 ----- repos/base-hw/src/core/spec/x86_64/muen/pic.h | 75 ------ .../spec/x86_64/muen/platform_services.cc | 40 --- .../core/spec/x86_64/muen/platform_support.cc | 102 -------- .../core/spec/x86_64/muen/sinfo_instance.cc | 21 -- .../core/spec/x86_64/muen/sinfo_instance.h | 28 -- .../src/core/spec/x86_64/muen/timer.cc | 90 ------- .../base-hw/src/core/spec/x86_64/muen/timer.h | 51 ---- .../spec/x86_64/muen/vm_session_component.cc | 89 ------- repos/base-hw/src/kernel/spec/muen/target.mk | 54 ---- repos/base-hw/src/lib/muen/muschedinfo.h | 24 -- repos/base-hw/src/lib/muen/sinfo.cc | 243 ------------------ repos/base/run/platform_drv.inc | 12 +- repos/base/run/smp.run | 5 - repos/dde_linux/run/nic_router_uplinks.run | 2 +- repos/dde_linux/run/usb_hid_raw.run | 6 +- repos/dde_linux/run/usb_hid_reconnect.run | 12 +- .../gems/recipes/pkg/drivers_nic-muen/README | 3 - .../recipes/pkg/drivers_nic-muen/archives | 3 - repos/gems/recipes/pkg/drivers_nic-muen/hash | 1 - .../recipes/raw/drivers_nic-muen/content.mk | 4 - .../raw/drivers_nic-muen/drivers.config | 55 ---- repos/gems/recipes/raw/drivers_nic-muen/hash | 1 - repos/libports/run/smartcard.run | 4 +- .../pkg/drivers_interactive-muen/README | 3 - .../pkg/drivers_interactive-muen/archives | 6 - .../recipes/pkg/drivers_interactive-muen/hash | 1 - .../raw/drivers_interactive-muen/content.mk | 7 - .../drivers_interactive-muen/drivers.config | 105 -------- .../event_filter.config | 30 --- .../drivers_interactive-muen/fb_drv.config | 1 - .../recipes/raw/drivers_interactive-muen/hash | 1 - repos/os/run/cpu_bench.run | 1 - repos/os/run/input.run | 4 +- .../platform/spec/x86/pci_config_access.h | 46 ++-- repos/ports/run/netperf_lwip_wifi.run | 5 - repos/ports/run/netperf_lxip_wifi.run | 5 - repos/ports/run/vbox_share.inc | 5 +- repos/ports/run/virtualbox_auto.inc | 13 +- tool/builddir/build.conf/run_x86_64 | 10 +- tool/run/boot_dir/hw | 27 +- tool/run/depot.inc | 2 - tool/run/image/muen | 87 ------- 63 files changed, 46 insertions(+), 2057 deletions(-) delete mode 100644 repos/base-hw/board/muen/image_link_address delete mode 100644 repos/base-hw/doc/x86_64_muen.txt delete mode 100644 repos/base-hw/include/spec/x86_64/muen/sinfo.h delete mode 100644 repos/base-hw/lib/mk/spec/x86_64/bootstrap-hw-muen.mk delete mode 100644 repos/base-hw/lib/mk/spec/x86_64/core-hw-muen.mk delete mode 100644 repos/base-hw/lib/mk/spec/x86_64/sinfo-muen.mk delete mode 100644 repos/base-hw/patches/muen_ada-bfd.patch delete mode 100644 repos/base-hw/patches/muen_python2.patch delete mode 100644 repos/base-hw/ports/muen.hash delete mode 100644 repos/base-hw/ports/muen.port delete mode 100644 repos/base-hw/recipes/src/base-hw-muen/acpi_target_mk delete mode 100644 repos/base-hw/recipes/src/base-hw-muen/content.mk delete mode 100644 repos/base-hw/recipes/src/base-hw-muen/hash delete mode 100644 repos/base-hw/recipes/src/base-hw-muen/used_apis delete mode 100644 repos/base-hw/src/bootstrap/spec/x86_64/crt0_translation_table_muen.s delete mode 100644 repos/base-hw/src/bootstrap/spec/x86_64/platform_muen.cc delete mode 100644 repos/base-hw/src/core/spec/x86_64/muen/board.h delete mode 100644 repos/base-hw/src/core/spec/x86_64/muen/kernel/thread_exception.cc delete mode 100644 repos/base-hw/src/core/spec/x86_64/muen/kernel/vm.cc delete mode 100644 repos/base-hw/src/core/spec/x86_64/muen/pic.h delete mode 100644 repos/base-hw/src/core/spec/x86_64/muen/platform_services.cc delete mode 100644 repos/base-hw/src/core/spec/x86_64/muen/platform_support.cc delete mode 100644 repos/base-hw/src/core/spec/x86_64/muen/sinfo_instance.cc delete mode 100644 repos/base-hw/src/core/spec/x86_64/muen/sinfo_instance.h delete mode 100644 repos/base-hw/src/core/spec/x86_64/muen/timer.cc delete mode 100644 repos/base-hw/src/core/spec/x86_64/muen/timer.h delete mode 100644 repos/base-hw/src/core/spec/x86_64/muen/vm_session_component.cc delete mode 100644 repos/base-hw/src/kernel/spec/muen/target.mk delete mode 100644 repos/base-hw/src/lib/muen/muschedinfo.h delete mode 100644 repos/base-hw/src/lib/muen/sinfo.cc delete mode 100644 repos/gems/recipes/pkg/drivers_nic-muen/README delete mode 100644 repos/gems/recipes/pkg/drivers_nic-muen/archives delete mode 100644 repos/gems/recipes/pkg/drivers_nic-muen/hash delete mode 100644 repos/gems/recipes/raw/drivers_nic-muen/content.mk delete mode 100644 repos/gems/recipes/raw/drivers_nic-muen/drivers.config delete mode 100644 repos/gems/recipes/raw/drivers_nic-muen/hash delete mode 100644 repos/os/recipes/pkg/drivers_interactive-muen/README delete mode 100644 repos/os/recipes/pkg/drivers_interactive-muen/archives delete mode 100644 repos/os/recipes/pkg/drivers_interactive-muen/hash delete mode 100644 repos/os/recipes/raw/drivers_interactive-muen/content.mk delete mode 100644 repos/os/recipes/raw/drivers_interactive-muen/drivers.config delete mode 100644 repos/os/recipes/raw/drivers_interactive-muen/event_filter.config delete mode 100644 repos/os/recipes/raw/drivers_interactive-muen/fb_drv.config delete mode 100644 repos/os/recipes/raw/drivers_interactive-muen/hash delete mode 100644 tool/run/image/muen diff --git a/repos/README b/repos/README index 860dc5759e..f57c4bfdb2 100644 --- a/repos/README +++ b/repos/README @@ -31,33 +31,25 @@ but build upon of each other: :'nova': NOVA hypervisor developed at University of Technology Dresden - See [https://genode.org/documentation/platforms/nova] :'foc': Fiasco.OC is a modernized version of the Fiasco microkernel with a completely revised kernel interface fostering capability-based security. It is not compatible with L4/Fiasco. - See [https://genode.org/documentation/platforms/foc] :'hw': The hw platform allows the execution of Genode on bare ARM and x86 hardware without the need for a separate kernel. The kernel functionality is - included in core except in the special case of the Muen separation - kernel. - See [https://genode.org/documentation/platforms/hw] and - [https://genode.org/documentation/platforms/muen] + included in core. :'okl4': OKL4 kernel (x86_32 and ARM) developed at Open-Kernel-Labs. - See [https://genode.org/documentation/platforms/okl4] :'pistachio': L4ka::Pistachio kernel developed at University of Karlsruhe. - See [https://genode.org/documentation/platforms/pistachio] :'fiasco': L4/Fiasco kernel developed at University of Technology Dresden. - See [https://genode.org/documentation/platforms/fiasco] :'sel4': seL4 microkernel developed at NICTA/General Dynamics diff --git a/repos/base-hw/board/muen/image_link_address b/repos/base-hw/board/muen/image_link_address deleted file mode 100644 index 0a75c0af2d..0000000000 --- a/repos/base-hw/board/muen/image_link_address +++ /dev/null @@ -1 +0,0 @@ -0x00200000 diff --git a/repos/base-hw/doc/x86_64_muen.txt b/repos/base-hw/doc/x86_64_muen.txt deleted file mode 100644 index 050d6a2a9f..0000000000 --- a/repos/base-hw/doc/x86_64_muen.txt +++ /dev/null @@ -1,164 +0,0 @@ - - ============================================= - Getting started with 'base-hw' on the Muen SK - ============================================= - - - The Muen Team - -Abstract -######## - -This is a short tutorial that depicts a handy way to get a Genode image, built -with 'base-hw', started as subject on the Muen Separation Kernel (SK) -[https://muen.sk]. - -Tutorial -######## - -For information on how to download, build and prove the Muen SK refer to the -project website. In summary: install the Ada/SPARK tool-chain and all required -distribution packages. Also ensure that you have installed the Genode tool-chain -that is available at: - -:[https://genode.org/download/tool-chain]: - Genode tool-chain - -To automatically download the Muen kernel and integrate it with Genode, issue -the following commands: - -! cd -! ./tool/ports/prepare_port muen - -The next step is to create a build directory prepared for compiling Genode for -Muen. Use the create_builddir tool for this task: - -! ./tool/create_builddir muen - -You can customize Muen system by changing the --image-muen RUN_OPT parameters -in the 'build.conf' file in the build directory under build/etc. - -The file contains explanatory comments above each configuration variable, which -are all set to their default values. - -Muen systems are built for a specific hardware platform and by default the -system is built for the Lenovo T430s. All currently supported platforms have a -corresponding hardware specification which can be found in the Muen project -directory under 'policy/hardware'. Note that the Muen project directory can be -found at '/contrib/muen-*/src/kernel/muen'. - -To get a list of all currently supported hardware platforms issue the following -command: - -! ls contrib/muen-*/src/kernel/muen/policy/hardware/ | grep -v common - -Set the '--image-muen-hardware' and '--image-muen-platform' parameters to point -to the configuration files of your intended hardware platform. Note that the -specified paths for both '--image-muen-hardware', '--image-muen-platform' and -'--image-muen-system' must be either relative to the Muen policy directory -(e.g. 'platform/lenovo-t430s.xml' or 'xml/genode-base_hw_simple.xml') or -absolute paths. Also change the other parameters to match your environment. - -If no hardware configuration for your specific hardware is available, refer to -the README of the 'mugenhwcfg' tool -[https://git.codelabs.ch/?p=muen/mugenhwcfg.git] for instructions on how to -generate a new configuration. - -You can now change to the created build directory and compile a Genode system: - -! cd build/muen/ -! make run/log - -Once the build is done, the Muen system which contains the Genode scenario is -available as a Multiboot binary image under 'var/run/log/image.bin'. If an -error occurs during the Muen build process check the log file located at -'kernel/build.log'. - -Automated hardware deployment -############################# - -For automated deployment and execution on real hardware, the iPXE and AMT run -mechanisms provided by the Genode build system can be used. The modules are -controlled by the RUN_OPT variable specified in the 'etc/build.conf' file. An -example configuration for executing a Muen/Genode system on a real x86 machine -using AMT for resetting the target system and capturing the log output while -loading the Muen system image via iPXE: - -!RUN_OPT += --include power_on/amt -!RUN_OPT += --power-on-amt-host 192.168.254.2 -!RUN_OPT += --power-on-amt-password 'foo!' -!RUN_OPT += --include load/ipxe -!RUN_OPT += --load-ipxe-base-dir /srv/www -!RUN_OPT += --load-ipxe-boot-dir boot -!RUN_OPT += --include log/amt -!RUN_OPT += --log-amt-host 192.168.254.2 -!RUN_OPT += --log-amt-password 'foo!' - -The target machine is expected to request the following iPXE configuration: -http://${HOST_URL}/${ipxe-boot-dir}/boot.cfg. This can be achieved by building -iPXE with the following embedded script: - -! #!ipxe -! dhcp -! chain http://${HOST_URL}/${ipxe-boot-dir}/boot.cfg - -For additional information on iPXE and embedded scripts refer to the iPXE website -at [http://ipxe.org/howto/chainloading#breaking_the_loop_with_an_embedded_script]. - -The deployment host must serve the Genode system image via http. In the above -example the root directory of the webserver is '/srv/www'. Note that the -webserver must support ranged requests as otherwise iPXE will not load (large) -system image files correctly. - -Integration of Muen with Genode -############################### - -Instead of letting the Genode build system compile and assemble the complete -Muen system, you can let it only build a specific Genode base-hw run scenario -and then do the integration yourself. This will for example allow you to run a -simple script like run/log on Muen in the Bochs x86 emulator -[http://bochs.sf.net], removing the requirement for having access to supported -hardware. - -As a first step acquire the Muen sources by executing the following commands: - -! git clone https://git.codelabs.ch/git/muen.git -! cd muen -! git submodule update --init tools/mugenschedcfg -! git submodule update --init components/libxhcidbg -! make SYSTEM=xml/genode-base_hw_simple.xml COMPONENTS="libdebuglog libmudm libmutime libxhcidbg dbgserver sm time" emulate - -This will build a Muen SK system and start it using the Bochs emulator. You -should get the following error: - -! mupack: File '/pack/../policy/obj/base_hw' referenced by -! physical memory region 'base_hw|bin' not found - -This means that the Muen packer tool was unable to find the component binary -'base_hw', which is expected since it has not yet been compiled. - -Now it is time to build the Genode 'base-hw' image for Muen. To tell the Genode -build system that the Muen system integration is performed externally by -changing the --image-muen-external-build parameter in the 'etc/build.conf' file -within your build Genode directory like so: - -! RUN_OPT += --image-muen-external-build 1 - -After this change you can build the Genode 'base-hw' image and export it to the -Muen working directory using the following command: - -! objcopy -O binary var/run/log/boot/image.elf /policy/obj/base_hw - -Change back to the Muen working directory to package the system image and -restart emulation: - -! cd -! make SYSTEM=xml/genode-base_hw_simple.xml COMPONENTS="libdebuglog libmudm libmutime libxhcidbg dbgserver sm time" emulate - -The serial output of the system is written to the -'/emulate/serial.out' file. You should see the following line: - -! [init -> test-log] Test done. - -This indicates the successful execution of the Genode 'run/log' scenario as -Muen subject on Bochs. diff --git a/repos/base-hw/include/spec/x86_64/muen/sinfo.h b/repos/base-hw/include/spec/x86_64/muen/sinfo.h deleted file mode 100644 index 64fe5f70fc..0000000000 --- a/repos/base-hw/include/spec/x86_64/muen/sinfo.h +++ /dev/null @@ -1,211 +0,0 @@ -/* - * \brief Muen subject information API - * \author Reto Buerki - * \date 2015-04-21 - * - * Defines functions to retrieve information about the execution environment of - * a subject running on the Muen Separation Kernel. - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#ifndef _INCLUDE__SPEC__X86_64__MUEN__SINFO_H_ -#define _INCLUDE__SPEC__X86_64__MUEN__SINFO_H_ - -#include - -struct Subject_info_type; -struct Scheduling_info_type; - -namespace Genode -{ - /** - * Muen Subject Info class - */ - class Sinfo; -} - -class Genode::Sinfo -{ - public: - - enum Config { - MUEN_SUBJECT_INFO_MAGIC = 0x02006f666e69756dULL, - MAX_RESOURCE_COUNT = 255, - MAX_NAME_LENGTH = 63, - PHYSICAL_BASE_ADDR = 0xe00000000, - SIZE = 0x8000, - HASH_LENGTH = 32, - MEM_WRITABLE_FLAG = (1 << 0), - MEM_EXECUTABLE_FLAG = (1 << 1), - MEM_CHANNEL_FLAG = (1 << 2), - DEV_MSI_FLAG = (1 << 0), - }; - - Sinfo(const addr_t base_addr); - - /* Resource name */ - struct Name_type { - uint8_t length; - char data[MAX_NAME_LENGTH]; - uint8_t null_term; - } __attribute__((packed)); - - enum Content { - CONTENT_UNINITIALIZED, - CONTENT_FILL, - CONTENT_FILE, - }; - - /* Structure holding information about a memory region */ - struct Memregion_type { - enum Content content; - uint64_t address; - uint64_t size; - uint8_t hash[HASH_LENGTH]; - uint8_t flags; - uint16_t pattern; - char padding[1]; - } __attribute__((packed)); - - /* - * Structure holding information about a PCI device, - * explicitly padded to the size of the largest resource variant - */ - struct Device_type { - uint16_t sid; - uint16_t irte_start; - uint8_t irq_start; - uint8_t ir_count; - uint8_t flags; - char padding[sizeof(struct Memregion_type) - 7]; - } __attribute__((packed)); - - /* Currently known resource types */ - enum Resource_kind { - RES_NONE, - RES_MEMORY, - RES_EVENT, - RES_VECTOR, - RES_DEVICE - }; - - /* Resource data depending on the kind of resource */ - union Resource_data { - struct Memregion_type mem; - struct Device_type dev; - uint8_t number; - }; - - /* Exported resource with associated name */ - struct Resource_type { - enum Resource_kind kind; - struct Name_type name; - char padding[3]; - union Resource_data data; - } __attribute__((packed)); - - /* Muen subject information (sinfo) structure */ - struct Subject_info_type { - uint64_t magic; - uint32_t tsc_khz; - struct Name_type name; - uint16_t resource_count; - char padding[1]; - struct Resource_type resources[MAX_RESOURCE_COUNT]; - } __attribute__((packed)); - - /* - * Check Muen sinfo Magic. - */ - bool check_magic(void) const; - - /* - * Return subject name. - * - * The function returns NULL if the subject name cannot be retrieved. - */ - const char * get_subject_name(void); - - /* - * Return resource with given name and kind. - * - * If no resource with given name exists, null is returned. - */ - const struct Resource_type * - get_resource(const char *const name, enum Resource_kind kind) const; - - /* - * Return information for PCI device with given SID. - * - * The function returns null if no device information for the specified device - * exists. - */ - const struct Device_type * get_device(const uint16_t sid) const; - - /* - * Resource callback. - * - * Used in the for_each_resource function. The optional void data - * pointer can be used to pass additional data. - */ - typedef bool (*resource_cb)(const struct Resource_type *const res, - void *data); - - /* - * Invoke given callback function for each available resource. - * - * Resource information and the optional data argument are passed to each - * invocation of the callback. If a callback invocation returns false, - * processing is aborted and false is returned to the caller. - */ - bool for_each_resource(resource_cb func, void *data) const; - - /* - * Return TSC tick rate in kHz. - * - * The function returns 0 if the TSC tick rate cannot be retrieved. - */ - uint64_t get_tsc_khz(void) const; - - /* - * Return start time of current minor frame in TSC ticks. - */ - uint64_t get_sched_start(void) const; - - /* - * Return end time of current minor frame in TSC ticks. - */ - uint64_t get_sched_end(void) const; - - /* - * Log sinfo status. - */ - void log_status(); - - private: - - Subject_info_type * sinfo = nullptr; - Scheduling_info_type * sched_info = nullptr; - char subject_name[MAX_NAME_LENGTH + 1]; - bool subject_name_set = false; - - /* - * Iterate over all resources beginning at given start resource. If the res - * member of the iterator is nil, the function (re)starts the iteration at the first - * resource. - */ - struct iterator { - const struct Resource_type *res; - unsigned int idx; - }; - - bool iterate_resources(struct iterator *const iter) const; -}; - -#endif /* _INCLUDE__SPEC__X86_64__MUEN__SINFO_H_ */ diff --git a/repos/base-hw/lib/mk/bootstrap-hw.inc b/repos/base-hw/lib/mk/bootstrap-hw.inc index 449ec3dbac..ea88e1b4f7 100644 --- a/repos/base-hw/lib/mk/bootstrap-hw.inc +++ b/repos/base-hw/lib/mk/bootstrap-hw.inc @@ -36,6 +36,5 @@ vpath base/% $(BASE_HW_DIR)/src vpath bootstrap/% $(BASE_HW_DIR)/src vpath hw/% $(BASE_HW_DIR)/src/lib vpath lib/base/% $(BASE_HW_DIR)/src -vpath lib/muen/% $(BASE_HW_DIR)/src vpath lib/base/% $(BASE_DIR)/src vpath lib/startup/% $(BASE_DIR)/src diff --git a/repos/base-hw/lib/mk/spec/x86_64/bootstrap-hw-muen.mk b/repos/base-hw/lib/mk/spec/x86_64/bootstrap-hw-muen.mk deleted file mode 100644 index a690cc3979..0000000000 --- a/repos/base-hw/lib/mk/spec/x86_64/bootstrap-hw-muen.mk +++ /dev/null @@ -1,12 +0,0 @@ -REQUIRES = x86_64 - -REP_INC_DIR += src/bootstrap/spec/x86_64 - -SRC_CC += bootstrap/spec/x86_64/platform_muen.cc -SRC_CC += lib/muen/sinfo.cc -SRC_CC += hw/spec/64bit/memory_map.cc - -SRC_S += bootstrap/spec/x86_64/crt0.s -SRC_S += bootstrap/spec/x86_64/crt0_translation_table_muen.s - -include $(call select_from_repositories,lib/mk/bootstrap-hw.inc) diff --git a/repos/base-hw/lib/mk/spec/x86_64/core-hw-muen.mk b/repos/base-hw/lib/mk/spec/x86_64/core-hw-muen.mk deleted file mode 100644 index 1dd61ebdbd..0000000000 --- a/repos/base-hw/lib/mk/spec/x86_64/core-hw-muen.mk +++ /dev/null @@ -1,48 +0,0 @@ -# -# \brief Build config for Genodes core process -# \author Stefan Kalkowski -# \author Martin Stein -# \date 2012-10-04 -# - -REQUIRES = x86_64 - -LIBS += sinfo-muen - -# add include paths -REP_INC_DIR += src/core/spec/x86_64/muen -REP_INC_DIR += src/core/spec/x86_64 - -# add assembly sources -SRC_S += spec/x86_64/crt0.s -SRC_S += spec/x86_64/exception_vector.s - -# add C++ sources -SRC_CC += kernel/cpu_up.cc -SRC_CC += kernel/vm_thread_on.cc -SRC_CC += kernel/lock.cc -SRC_CC += spec/x86/io_port_session_component.cc -SRC_CC += spec/x86/io_port_session_support.cc -SRC_CC += spec/x86_64/bios_data_area.cc -SRC_CC += spec/x86_64/cpu.cc -SRC_CC += spec/x86_64/kernel/cpu.cc -SRC_CC += spec/x86_64/kernel/pd.cc -SRC_CC += spec/x86_64/kernel/thread.cc -SRC_CC += spec/x86_64/kernel/thread.cc -SRC_CC += spec/x86_64/muen/kernel/thread_exception.cc -SRC_CC += spec/x86_64/muen/kernel/vm.cc -SRC_CC += spec/x86_64/muen/platform_services.cc -SRC_CC += spec/x86_64/muen/platform_support.cc -SRC_CC += spec/x86_64/muen/sinfo_instance.cc -SRC_CC += spec/x86_64/muen/timer.cc -SRC_CC += spec/x86_64/muen/vm_session_component.cc -SRC_CC += spec/x86_64/platform_support_common.cc -SRC_CC += vm_session_common.cc -SRC_CC += vm_session_component.cc - -SRC_CC += spec/64bit/memory_map.cc - -vpath spec/64bit/memory_map.cc $(call select_from_repositories,src/lib/hw) - -# include less specific configuration -include $(call select_from_repositories,lib/mk/core-hw.inc) diff --git a/repos/base-hw/lib/mk/spec/x86_64/sinfo-muen.mk b/repos/base-hw/lib/mk/spec/x86_64/sinfo-muen.mk deleted file mode 100644 index 03d1873319..0000000000 --- a/repos/base-hw/lib/mk/spec/x86_64/sinfo-muen.mk +++ /dev/null @@ -1,5 +0,0 @@ -SRC_CC = sinfo.cc - -REP_INC_DIR += include/spec/x86_64/muen - -vpath sinfo.cc $(call select_from_repositories,src/lib/muen) diff --git a/repos/base-hw/patches/muen_ada-bfd.patch b/repos/base-hw/patches/muen_ada-bfd.patch deleted file mode 100644 index d1fcda05c3..0000000000 --- a/repos/base-hw/patches/muen_ada-bfd.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff --git a/contrib/ada-bfd/Makefile b/contrib/ada-bfd/Makefile -index cd776781e..36c87b126 100644 ---- a/contrib/ada-bfd/Makefile -+++ b/contrib/ada-bfd/Makefile -@@ -1,6 +1,6 @@ --REV = 235a23452f7c5104ce6270a84f9794f497d496aa -+REV = 1ee4c51befbda90360e519f5b76c17db124e2973 - PKG = ada-bfd --SRC = https://github.com/stcarrez/ada-bfd.git -+SRC = https://github.com/skalk/ada-bfd.git - - define CMD_CONFIGURE - cd $(WRK) && ./configure --prefix=$(BUILDDIR) -diff --git a/contrib/projects/bfdada.gpr b/contrib/projects/bfdada.gpr -index 8a9cd711a..6cbe14152 100644 ---- a/contrib/projects/bfdada.gpr -+++ b/contrib/projects/bfdada.gpr -@@ -1,8 +1,8 @@ - library project Bfdada is -- for Source_Dirs use ("../build/share/ada/adainclude/bfdada"); -+ for Source_Dirs use ("../build/include/bfdada.static"); - for Library_Name use "ada-bfd"; -- for Library_Dir use "../build/lib"; -- for Library_ALI_Dir use "../build/lib/ada/adalib/bfdada"; -+ for Library_Dir use "../build/lib/bfdada.static"; -+ for Library_ALI_Dir use "../build/lib/bfdada.static"; - for Library_Kind use "static"; - for Externally_Built use "true"; - end Bfdada; diff --git a/repos/base-hw/patches/muen_python2.patch b/repos/base-hw/patches/muen_python2.patch deleted file mode 100644 index ee58641c42..0000000000 --- a/repos/base-hw/patches/muen_python2.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/projects/execute b/projects/execute -index 43820f0ed..e2dbda43c 100755 ---- a/projects/execute -+++ b/projects/execute -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python2 - # - # Build system execution wrapper. - # -diff --git a/tools/scripts/mulog-subject.py b/tools/scripts/mulog-subject.py -index cb6e355dd..51965a797 100755 ---- a/tools/scripts/mulog-subject.py -+++ b/tools/scripts/mulog-subject.py -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python2 - - from __future__ import print_function - -diff --git a/tools/scripts/mulog.py b/tools/scripts/mulog.py -index 6d7fe8bb2..671913441 100755 ---- a/tools/scripts/mulog.py -+++ b/tools/scripts/mulog.py -@@ -1,4 +1,4 @@ --#!/usr/bin/python -+#!/usr/bin/python2 - - import sys - import re - diff --git a/repos/base-hw/ports/muen.hash b/repos/base-hw/ports/muen.hash deleted file mode 100644 index 4e02740656..0000000000 --- a/repos/base-hw/ports/muen.hash +++ /dev/null @@ -1 +0,0 @@ -11b5bd32a0234b9f7279d82487eb3d0d0eaee4db diff --git a/repos/base-hw/ports/muen.port b/repos/base-hw/ports/muen.port deleted file mode 100644 index 121a84ac1a..0000000000 --- a/repos/base-hw/ports/muen.port +++ /dev/null @@ -1,21 +0,0 @@ -LICENSE := GPLv3 -VERSION := git -DOWNLOADS := muen.git - -URL(muen) := https://git.codelabs.ch/git/muen.git -REV(muen) := 7f41b2748e0ed6aadc3e43426390ae4efc3c5e65 -DIR(muen) := src/kernel/muen - -PATCHES := $(sort $(wildcard $(REP_DIR)/patches/muen_*.patch)) -PATCH_OPT := -p1 -d src/kernel/muen - -$(call check_tool,git) -$(call check_tool,iasl) -$(call check_tool,tidy) -$(call check_tool,xsltproc) - -default : additional_steps -additional_steps : $(DOWNLOADS) _patch - $(VERBOSE)git -C src/kernel/muen submodule update --init tools/mugenschedcfg > /dev/null - $(VERBOSE)git -C src/kernel/muen submodule update --init components/libxhcidbg > /dev/null - $(VERBOSE)$(MAKE) -C src/kernel/muen/contrib QUIET=true download diff --git a/repos/base-hw/recipes/src/base-hw-muen/acpi_target_mk b/repos/base-hw/recipes/src/base-hw-muen/acpi_target_mk deleted file mode 100644 index 397e400d58..0000000000 --- a/repos/base-hw/recipes/src/base-hw-muen/acpi_target_mk +++ /dev/null @@ -1,7 +0,0 @@ -ifneq ($(INSTALL_DIR),) -all: $(INSTALL_DIR)/acpi -endif - -$(INSTALL_DIR)/acpi: - echo "" > $@ - diff --git a/repos/base-hw/recipes/src/base-hw-muen/content.mk b/repos/base-hw/recipes/src/base-hw-muen/content.mk deleted file mode 100644 index 44c111dcb8..0000000000 --- a/repos/base-hw/recipes/src/base-hw-muen/content.mk +++ /dev/null @@ -1,4 +0,0 @@ -BOARD = muen - -include $(GENODE_DIR)/repos/base-hw/recipes/src/base-hw_content.inc - diff --git a/repos/base-hw/recipes/src/base-hw-muen/hash b/repos/base-hw/recipes/src/base-hw-muen/hash deleted file mode 100644 index 1c61aacdb8..0000000000 --- a/repos/base-hw/recipes/src/base-hw-muen/hash +++ /dev/null @@ -1 +0,0 @@ -2021-01-22 f4732bbeeea2ef33b7368882019aaece498b1e83 diff --git a/repos/base-hw/recipes/src/base-hw-muen/used_apis b/repos/base-hw/recipes/src/base-hw-muen/used_apis deleted file mode 100644 index ed9b772565..0000000000 --- a/repos/base-hw/recipes/src/base-hw-muen/used_apis +++ /dev/null @@ -1,2 +0,0 @@ -base-hw -base diff --git a/repos/base-hw/src/bootstrap/spec/x86_64/crt0_translation_table_muen.s b/repos/base-hw/src/bootstrap/spec/x86_64/crt0_translation_table_muen.s deleted file mode 100644 index 53502e9220..0000000000 --- a/repos/base-hw/src/bootstrap/spec/x86_64/crt0_translation_table_muen.s +++ /dev/null @@ -1,52 +0,0 @@ -/* - * \brief Initial pagetables for x86_64_muen - * \author Adrian-Ken Rueegsegger - * \author Reto Buerki - * \date 2015-04-22 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -.set MIN_PAGE_SIZE_LOG2, 12 - -.data - - /***************************************** - ** Identity mapping from 2MiB to 1GiB ** - ** plus mappings for Muen pvirt pages ** - *****************************************/ - - /* PML4 */ - .p2align MIN_PAGE_SIZE_LOG2 - .global _kernel_pml4 - _kernel_pml4: - .quad _kernel_pdp + 0xf - .fill 511, 8, 0x0 - - /* PDP */ - .p2align MIN_PAGE_SIZE_LOG2 - _kernel_pdp: - .quad _kernel_pd + 0xf - .fill 55, 8, 0x0 - .quad _kernel_pd_pvirt + 0xf - .fill 455, 8, 0x0 - - /* PD */ - .p2align MIN_PAGE_SIZE_LOG2 - _kernel_pd: - .quad 0 - .set entry, 0x20018f - .rept 511 - .quad entry - .set entry, entry + 0x200000 - .endr - - .p2align MIN_PAGE_SIZE_LOG2 - _kernel_pd_pvirt: - .quad 0xe0000018f - .fill 511, 8, 0x0 diff --git a/repos/base-hw/src/bootstrap/spec/x86_64/platform_muen.cc b/repos/base-hw/src/bootstrap/spec/x86_64/platform_muen.cc deleted file mode 100644 index a482cfabd2..0000000000 --- a/repos/base-hw/src/bootstrap/spec/x86_64/platform_muen.cc +++ /dev/null @@ -1,57 +0,0 @@ -/* - * \brief Platform implementations specific for x86_64 - * \author Reto Buerki - * \author Stefan Kalkowski - * \date 2015-05-04 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#include -#include - -using Sinfo = Genode::Sinfo; - -enum { - TIMER_BASE_ADDR = 0xe00010000, - TIMER_SIZE = 0x1000, - TIMER_PREEMPT_BASE_ADDR = 0xe00011000, - TIMER_PREEMPT_SIZE = 0x1000, - - COM1_PORT = 0x3f8, -}; - - -Bootstrap::Platform::Board::Board() -: core_mmio(Memory_region { Sinfo::PHYSICAL_BASE_ADDR, Sinfo::SIZE }, - Memory_region { TIMER_BASE_ADDR, TIMER_SIZE }, - Memory_region { TIMER_PREEMPT_BASE_ADDR, TIMER_PREEMPT_SIZE }) -{ - Sinfo sinfo(Sinfo::PHYSICAL_BASE_ADDR); - const struct Sinfo::Resource_type * - region = sinfo.get_resource("ram", Sinfo::RES_MEMORY); - - if (!region) - Genode::error("Unable to retrieve base-hw ram region"); - else - early_ram_regions.add(Memory_region - { region->data.mem.address, region->data.mem.size }); -} - - -unsigned Bootstrap::Platform::enable_mmu() -{ - using ::Board::Cpu; - - Cpu::Cr3::write(Cpu::Cr3::Pdb::masked((addr_t)core_pd->table_base)); - return 0; -} - - -Board::Serial::Serial(Genode::addr_t, Genode::size_t, unsigned baudrate) -:X86_uart(COM1_PORT, 0, baudrate) {} diff --git a/repos/base-hw/src/core/spec/x86_64/muen/board.h b/repos/base-hw/src/core/spec/x86_64/muen/board.h deleted file mode 100644 index 76eb31c96e..0000000000 --- a/repos/base-hw/src/core/spec/x86_64/muen/board.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * \brief x86_64_muen constants - * \author Adrian-Ken Rueegsegger - * \date 2015-07-02 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#ifndef _CORE__SPEC__X86_64__MUEN__BOARD_H_ -#define _CORE__SPEC__X86_64__MUEN__BOARD_H_ - -#include -#include -#include -#include - -namespace Kernel { class Cpu; } - -namespace Board { - using namespace Hw::Pc_board; - - enum { - TIMER_BASE_ADDR = 0xe00010000, - TIMER_SIZE = 0x1000, - TIMER_PREEMPT_BASE_ADDR = 0xe00011000, - TIMER_PREEMPT_SIZE = 0x1000, - - VECTOR_REMAP_BASE = 48, - TIMER_EVENT_PREEMPT = 30, - TIMER_EVENT_KERNEL = 31, - TIMER_VECTOR_KERNEL = 32, - TIMER_VECTOR_USER = 50, - }; - - using Vm_state = Genode::Cpu_state; - - enum { VCPU_MAX = 1 }; - - struct Vm_page_table {}; - struct Vm_page_table_array {}; - - struct Vcpu_context { Vcpu_context(Kernel::Cpu &) {} }; -} - -#endif /* _CORE__SPEC__X86_64__MUEN__BOARD_H_ */ diff --git a/repos/base-hw/src/core/spec/x86_64/muen/kernel/thread_exception.cc b/repos/base-hw/src/core/spec/x86_64/muen/kernel/thread_exception.cc deleted file mode 100644 index bb7a1e1ed2..0000000000 --- a/repos/base-hw/src/core/spec/x86_64/muen/kernel/thread_exception.cc +++ /dev/null @@ -1,44 +0,0 @@ -/* - * \brief Kernel backend for execution contexts in userland - * \author Adrian-Ken Rueegsegger - * \author Reto Buerki - * \date 2015-04-28 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -/* core includes */ -#include -#include - -using namespace Kernel; - -void Thread::exception(Cpu & cpu) -{ - switch (regs->trapno) { - case Cpu::Context::PAGE_FAULT: - _mmu_exception(); - return; - case Cpu::Context::UNDEFINED_INSTRUCTION: - Genode::raw(*this, ": undefined instruction at ip=", (void*)regs->ip); - _die(); - return; - case Cpu::Context::SUPERVISOR_CALL: - _call(); - return; - } - if (regs->trapno >= Cpu::Context::INTERRUPTS_START && - regs->trapno <= Cpu::Context::INTERRUPTS_END) { - cpu.pic().irq_occurred(regs->trapno); - _interrupt(cpu.id()); - return; - } - Genode::raw(*this, ": triggered unknown exception ", regs->trapno, - " with error code ", regs->errcode, " at ip=", (void*)regs->ip); - _die(); -} diff --git a/repos/base-hw/src/core/spec/x86_64/muen/kernel/vm.cc b/repos/base-hw/src/core/spec/x86_64/muen/kernel/vm.cc deleted file mode 100644 index bd6dcd04a4..0000000000 --- a/repos/base-hw/src/core/spec/x86_64/muen/kernel/vm.cc +++ /dev/null @@ -1,68 +0,0 @@ -/* - * \brief Kernel backend for virtual machines - * \author Stefan Kalkowski - * \author Reto Buerki - * \author Adrian-Ken Rueegsegger - * \date 2015-06-03 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#include -#include -#include -#include - -Kernel::Vm::Vm(unsigned, - Board::Vm_state & state, - Kernel::Signal_context & context, - Identity & id) -: Kernel::Object { *this }, - Cpu_job(Cpu_priority::MIN, 0), - _state(state), - _context(context), - _id(id), - _vcpu_context(cpu_pool().primary_cpu()) -{ - affinity(cpu_pool().primary_cpu()); -} - - -void Kernel::Vm::exception(Cpu & cpu) -{ - pause(); - if (_state.trapno == 200) { - _context.submit(1); - return; - } - - if (_state.trapno >= Genode::Cpu_state::INTERRUPTS_START && - _state.trapno <= Genode::Cpu_state::INTERRUPTS_END) { - cpu.pic().irq_occurred(_state.trapno); - _interrupt(cpu.id()); - _context.submit(1); - return; - } - Genode::raw("VM: triggered unknown exception ", _state.trapno, - " with error code ", _state.errcode); - - ASSERT_NEVER_CALLED; -} - - -void Kernel::Vm::proceed(Cpu & cpu) -{ - cpu.tss.ist[0] = (addr_t)&_state + sizeof(Genode::Cpu_state); - - asm volatile("sti \n" - "mov $1, %rax \n" - "vmcall"); -} - - -void Kernel::Vm::inject_irq(unsigned) { } diff --git a/repos/base-hw/src/core/spec/x86_64/muen/pic.h b/repos/base-hw/src/core/spec/x86_64/muen/pic.h deleted file mode 100644 index a647429568..0000000000 --- a/repos/base-hw/src/core/spec/x86_64/muen/pic.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * \brief Programmable interrupt controller for core - * \author Reto Buerki - * \date 2015-04-14 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#ifndef _CORE__SPEC__X86_64__MUEN__PIC_H_ -#define _CORE__SPEC__X86_64__MUEN__PIC_H_ - -namespace Board -{ - /** - * Programmable interrupt controller for core - */ - class Pic; -} - -class Board::Pic -{ - public: - - struct Virtual_context {}; - - enum { - /* - * FIXME: dummy ipi value on non-SMP platform, should be removed - * when SMP is an aspect of CPUs only compiled where - * necessary - */ - IPI = 255, - NR_OF_IRQ = 256, - }; - - void irq_occurred(unsigned irq) - { - if (irq < NR_OF_IRQ) - isr[irq] = true; - } - - bool take_request(unsigned &irq) - { - for (int i = 0; i < NR_OF_IRQ; i++) { - if (isr[i] == true) { - irq = i; - isr[i] = false; - return true; - } - } - return false; - } - - /* - * Dummies - */ - Pic() { } - void finish_request() { } - void unmask(unsigned const, unsigned) { } - void mask(unsigned const) { } - bool is_ip_interrupt(unsigned, unsigned) { return false; } - void store_apic_id(unsigned const) { } - void irq_mode(unsigned, unsigned, unsigned) { } - - private: - - bool isr[NR_OF_IRQ] = {false}; -}; - -#endif /* _CORE__SPEC__X86_64__MUEN__PIC_H_ */ diff --git a/repos/base-hw/src/core/spec/x86_64/muen/platform_services.cc b/repos/base-hw/src/core/spec/x86_64/muen/platform_services.cc deleted file mode 100644 index 36d6f6e08a..0000000000 --- a/repos/base-hw/src/core/spec/x86_64/muen/platform_services.cc +++ /dev/null @@ -1,40 +0,0 @@ -/* - * \brief Platform specific services for HW kernel on Muen - * \author Stefan Kalkowski - * \date 2015-06-03 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -/* Genode includes */ -#include - -/* core includes */ -#include -#include -#include -#include -#include - -/* - * Add I/O port service and virtualization specific vm service - */ -void Genode::platform_add_local_services(Rpc_entrypoint &ep, - Sliced_heap &sliced_heap, - Registry &services, - Trace::Source_registry &trace_sources) -{ - static Vm_root vm_root(ep, sliced_heap, core_env().ram_allocator(), - core_env().local_rm(), trace_sources); - static Core_service vm_ls(services, vm_root); - - static Io_port_root io_port_root(*core_env().pd_session(), - platform().io_port_alloc(), sliced_heap); - static Core_service io_port_ls(services, - io_port_root); -} diff --git a/repos/base-hw/src/core/spec/x86_64/muen/platform_support.cc b/repos/base-hw/src/core/spec/x86_64/muen/platform_support.cc deleted file mode 100644 index e5933c00d6..0000000000 --- a/repos/base-hw/src/core/spec/x86_64/muen/platform_support.cc +++ /dev/null @@ -1,102 +0,0 @@ -/* - * \brief Platform implementations specific for x86_64_muen - * \author Reto Buerki - * \author Adrian-Ken Rueegsegger - * \date 2015-04-21 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -/* Genode includes */ -#include - -/* core includes */ -#include -#include -#include - -#include - -using namespace Genode; - -struct Mmconf_address : Register<64> -{ - enum { PCI_CONFIG_BASE = 0xf8000000 }; - - struct Sid : Bitfield<12, 16> { }; - - /** - * Calculate SID (source-id, see VT-d spec section 3.4.1) from device PCI - * config space address. - */ - static unsigned to_sid(access_t const addr) { - return Sid::get(addr - PCI_CONFIG_BASE); } -}; - -struct Msi_address : Register<32> -{ - enum { BASE = 0xfee00010 }; - - struct Bits_0 : Bitfield<5, 15> { }; - struct Bits_1 : Bitfield<2, 1> { }; - struct Handle : Bitset_2 { }; - - /** - * Return MSI address register value for given handle to enable Interrupt - * Requests in Remappable Format, see VT-d specification section 5.1.2.2. - */ - static access_t to_msi_addr(Msi_address::Handle::access_t const handle) - { - access_t addr = BASE; - Handle::set(addr, handle); - return addr; - } -}; - - -bool Platform::get_msi_params(const addr_t mmconf, addr_t &address, - addr_t &data, unsigned &irq_number) -{ - const unsigned sid = Mmconf_address::to_sid(mmconf); - const struct Sinfo::Device_type *dev = sinfo()->get_device(sid); - - if (!dev) { - error("error retrieving Muen info for device with SID ", Hex(sid)); - return false; - } - if (!dev->ir_count) { - error("device ", Hex(sid), " has no IRQ assigned"); - return false; - } - if (!(dev->flags & Sinfo::DEV_MSI_FLAG)) { - error("device ", Hex(sid), " not configured for MSI"); - return false; - } - - data = 0; - address = Msi_address::to_msi_addr(dev->irte_start); - irq_number = dev->irq_start; - - log("enabling MSI for device with SID ", Hex(sid), ": " - "IRTE ", dev->irte_start, ", IRQ ", irq_number); - return true; -} - - -void Platform::_init_additional_platform_info(Xml_generator &) -{ - /* export subject info page as ROM module */ - _rom_fs.insert(new (core_mem_alloc()) - Rom_module((addr_t)Sinfo::PHYSICAL_BASE_ADDR, - Sinfo::SIZE, "subject_info_page")); -} - - -enum { COM1_PORT = 0x3f8 }; -Board::Serial::Serial(Genode::addr_t, Genode::size_t, unsigned baudrate) -:X86_uart(COM1_PORT, 0, baudrate) {} diff --git a/repos/base-hw/src/core/spec/x86_64/muen/sinfo_instance.cc b/repos/base-hw/src/core/spec/x86_64/muen/sinfo_instance.cc deleted file mode 100644 index d185bf7c52..0000000000 --- a/repos/base-hw/src/core/spec/x86_64/muen/sinfo_instance.cc +++ /dev/null @@ -1,21 +0,0 @@ -/* - * \brief Sinfo kernel singleton - * \author Reto Buerki - * \date 2016-05-09 - */ - -/* - * Copyright (C) 2016-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#include -#include - -Genode::Sinfo * Genode::sinfo() -{ - static Sinfo singleton(Platform::mmio_to_virt(Sinfo::PHYSICAL_BASE_ADDR)); - return &singleton; -} diff --git a/repos/base-hw/src/core/spec/x86_64/muen/sinfo_instance.h b/repos/base-hw/src/core/spec/x86_64/muen/sinfo_instance.h deleted file mode 100644 index 2c97554f31..0000000000 --- a/repos/base-hw/src/core/spec/x86_64/muen/sinfo_instance.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * \brief Sinfo kernel singleton - * \author Reto Buerki - * \date 2016-05-09 - */ - -/* - * Copyright (C) 2016-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#ifndef _CORE__SPEC__X86_64__MUEN__SINFO_INSTANCE_H_ -#define _CORE__SPEC__X86_64__MUEN__SINFO_INSTANCE_H_ - -/* base includes */ -#include - -namespace Genode -{ - /** - * Return sinfo singleton - */ - Sinfo * sinfo(); -} - -#endif /* _CORE__SPEC__X86_64__MUEN__SINFO_INSTANCE_H_ */ diff --git a/repos/base-hw/src/core/spec/x86_64/muen/timer.cc b/repos/base-hw/src/core/spec/x86_64/muen/timer.cc deleted file mode 100644 index fbfd68f2c1..0000000000 --- a/repos/base-hw/src/core/spec/x86_64/muen/timer.cc +++ /dev/null @@ -1,90 +0,0 @@ -/* - * \brief Timer driver for core - * \author Reto Buerki - * \author Martin Stein - * \date 2015-04-14 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -/* base includes */ -#include -#include - -/* core includes */ -#include -#include -#include -#include - -using namespace Genode; -using namespace Kernel; - - -Board::Timer::Timer(unsigned) : ticks_per_ms(sinfo()->get_tsc_khz()), start(0) -{ - /* first sinfo instance, output status */ - sinfo()->log_status(); - - const struct Sinfo::Resource_type * - region = sinfo()->get_resource("timed_event", Sinfo::RES_MEMORY); - if (!region) { - raw("muen-timer: Unable to retrieve timed event region"); - throw Invalid_region(); - } - - event_page = (Subject_timed_event *) - Platform::mmio_to_virt(region->data.mem.address); - event_page->event_nr = Board::TIMER_EVENT_KERNEL; - raw("muen-timer: Page @", Hex(region->data.mem.address), ", " - "frequency ", ticks_per_ms, " kHz, " - "event ", (unsigned)event_page->event_nr); - - region = sinfo()->get_resource("monitor_timed_event", Sinfo::RES_MEMORY); - if (region) { - raw("muen-timer: Found guest timed event page @", Hex(region->data.mem.address), - " -> enabling preemption"); - guest_event_page = (Subject_timed_event *) - Platform::mmio_to_virt(region->data.mem.address); - guest_event_page->event_nr = Board::TIMER_EVENT_PREEMPT; - } -} - - -unsigned Timer::interrupt_id() const { - return Board::TIMER_VECTOR_KERNEL; } - - -void Timer::_start_one_shot(time_t const ticks) -{ - static const time_t MIN_TICKS = 10UL; - - _device.start = _device.rdtsc(); - uint64_t t = _device.start + ((ticks > MIN_TICKS) ? ticks : MIN_TICKS); - _device.event_page->tsc_trigger = t; - - if (_device.guest_event_page) - _device.guest_event_page->tsc_trigger = t; -} - - -time_t Timer::ticks_to_us(time_t const ticks) const { - return timer_ticks_to_us(ticks, _device.ticks_per_ms); } - - -time_t Timer::us_to_ticks(time_t const us) const { - return us * (_device.ticks_per_ms / 1000); } - - -time_t Timer::_max_value() const { return ~0UL; } - - -time_t Timer::_duration() const -{ - return _device.rdtsc() - _device.start; -} diff --git a/repos/base-hw/src/core/spec/x86_64/muen/timer.h b/repos/base-hw/src/core/spec/x86_64/muen/timer.h deleted file mode 100644 index 81be426804..0000000000 --- a/repos/base-hw/src/core/spec/x86_64/muen/timer.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * \brief Timer driver for core - * \author Reto Buerki - * \date 2015-04-14 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#ifndef _TIMER_DRIVER_H_ -#define _TIMER_DRIVER_H_ - -/* Genode includes */ -#include - -namespace Board { class Timer; } - - -struct Board::Timer -{ - enum { TIMER_DISABLED = ~0ULL }; - - Genode::uint64_t ticks_per_ms; - Genode::uint64_t start; - - struct Subject_timed_event - { - Genode::uint64_t tsc_trigger; - Genode::uint8_t event_nr :6; - } __attribute__((packed)); - - struct Subject_timed_event * event_page = 0; - struct Subject_timed_event * guest_event_page = 0; - - inline Genode::uint64_t rdtsc() const - { - Genode::uint32_t lo, hi; - asm volatile("rdtsc" : "=a" (lo), "=d" (hi)); - return (Genode::uint64_t)hi << 32 | lo; - } - - class Invalid_region { }; - - Timer(unsigned); -}; - -#endif /* _TIMER_DRIVER_H_ */ diff --git a/repos/base-hw/src/core/spec/x86_64/muen/vm_session_component.cc b/repos/base-hw/src/core/spec/x86_64/muen/vm_session_component.cc deleted file mode 100644 index 77c757f997..0000000000 --- a/repos/base-hw/src/core/spec/x86_64/muen/vm_session_component.cc +++ /dev/null @@ -1,89 +0,0 @@ -/* - * \brief Core-specific instance of the VM session interface - * \author Stefan Kalkowski - * \date 2015-06-03 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -/* Genode includes */ -#include - -/* core includes */ -#include -#include - -using namespace Genode; - -static Board::Vm_page_table_array & dummy_array() -{ - static Board::Vm_page_table_array a; - return a; -} - - -void Vm_session_component::_attach(addr_t, addr_t, size_t) { } - - -void Vm_session_component::_attach_vm_memory(Dataspace_component &, - addr_t const, - Attach_attr const) { } - - -void Vm_session_component::attach_pic(addr_t) { } - - -void Vm_session_component::_detach_vm_memory(addr_t, size_t) { } - - -void * Vm_session_component::_alloc_table() -{ - static Board::Vm_page_table table; - return (void*) &table; -} - - -Vm_session_component::Vm_session_component(Rpc_entrypoint &ep, - Resources resources, - Label const &, - Diag, - Ram_allocator &ram_alloc, - Region_map ®ion_map, - unsigned, Trace::Source_registry &) -: Ram_quota_guard(resources.ram_quota), - Cap_quota_guard(resources.cap_quota), - _ep(ep), - _constrained_md_ram_alloc(ram_alloc, _ram_quota_guard(), _cap_quota_guard()), - _sliced_heap(_constrained_md_ram_alloc, region_map), - _region_map(region_map), - _table(*construct_at(_alloc_table())), - _table_array(dummy_array()), - _id({0, nullptr}) { } - - -Vm_session_component::~Vm_session_component() -{ - /* detach all regions */ - while (true) { - addr_t out_addr = 0; - - if (!_map.any_block_addr(&out_addr)) - break; - - detach(out_addr); - } - - /* free region in allocator */ - for (unsigned i = 0; i < _vcpu_id_alloc; i++) { - Vcpu & vcpu = _vcpus[i]; - if (vcpu.ds_cap.valid()) { - _region_map.detach(vcpu.ds_addr); - _constrained_md_ram_alloc.free(vcpu.ds_cap); - } - } -} diff --git a/repos/base-hw/src/kernel/spec/muen/target.mk b/repos/base-hw/src/kernel/spec/muen/target.mk deleted file mode 100644 index 758ed9fcbc..0000000000 --- a/repos/base-hw/src/kernel/spec/muen/target.mk +++ /dev/null @@ -1,54 +0,0 @@ -TARGET = muen -REQUIRES = x86_64 -MUEN_SRC_DIR = $(call select_from_ports,muen)/src/kernel/muen -MUEN_BUILD_DIR = $(BUILD_BASE_DIR)/kernel -MUEN_CONF_FILE = $(MUEN_BUILD_DIR)/muen.conf -MUEN_DST_DIR = $(MUEN_BUILD_DIR)/muen -MUEN_LOG = $(MUEN_BUILD_DIR)/build.log - -MUEN_SYSTEM = $(shell sed -n "/^SYSTEM/s/^.*=\\s*//p" ${MUEN_CONF_FILE}) -MUEN_HARDWARE = $(shell sed -n "/^HARDWARE/s/^.*=\\s*//p" ${MUEN_CONF_FILE}) -MUEN_PLATFORM = $(shell sed -n "/^PLATFORM/s/^.*=\\s*//p" ${MUEN_CONF_FILE}) -MUEN_COMPONENTS = $(shell sed -n "/^COMPONENTS/s/^.*=\\s*//p" ${MUEN_CONF_FILE}) -GNAT_PATH = $(shell sed -n "/^GNAT_PATH/s/^.*=\\s*//p" ${MUEN_CONF_FILE}) -SPARK_PATH = $(shell sed -n "/^SPARK_PATH/s/^.*=\\s*//p" ${MUEN_CONF_FILE}) - -BUILD_ENV = PATH=$(GNAT_PATH)/bin:$(SPARK_PATH)/bin:$$PATH -BUILD_OPTS = SYSTEM=$(MUEN_SYSTEM) HARDWARE=$(MUEN_HARDWARE) PLATFORM=$(MUEN_PLATFORM) NO_PROOF=true - -ifeq ($(VERBOSE),) -BUILD_OPTS += BUILD_OUTPUT_VERBOSE=true -else -BUILD_OPTS += BUILD_OUTPUT_NOCOLOR=true -endif - -$(TARGET): $(MUEN_DST_DIR) - $(MSG_BUILD)Muen policy - $(VERBOSE)$(BUILD_ENV) $(MAKE) -C $(MUEN_DST_DIR) $(BUILD_OPTS) policy-merge rts >> $(MUEN_LOG) 2>&1 - $(MSG_BUILD)Muen components - $(VERBOSE)$(BUILD_ENV) $(MAKE) -C $(MUEN_DST_DIR)/components \ - COMPONENTS=$(MUEN_COMPONENTS) $(BUILD_OPTS) >> $(MUEN_LOG) 2>&1 - $(MSG_BUILD)Muen kernel - $(VERBOSE)$(BUILD_ENV) $(MAKE) -C $(MUEN_DST_DIR)/policy $(BUILD_OPTS) compile >> $(MUEN_LOG) 2>&1 - $(VERBOSE)$(BUILD_ENV) $(MAKE) -C $(MUEN_DST_DIR)/kernel $(BUILD_OPTS) >> $(MUEN_LOG) 2>&1 - $(VERBOSE)$(BUILD_ENV) $(MAKE) -C $(MUEN_DST_DIR)/components $(BUILD_OPTS) install-tau0 >> $(MUEN_LOG) 2>&1 - -$(MUEN_DST_DIR): $(MUEN_SRC_DIR) - $(VERBOSE)mkdir -p $(MUEN_DST_DIR) - $(VERBOSE)tar c -C $(MUEN_SRC_DIR) . | tar x -m -C $(MUEN_DST_DIR) - -clean cleanall: clean_muen - -# -# Make sure to execute the 'clean_muen' rule prior the generic clean -# rule in 'prg.mk' because the generic rule will attempt to remove $(TARGET) -# file, which is a directory in our case. -# -clean_prg_objects: clean_muen - -clean_muen: - $(VERBOSE)rm -rf $(MUEN_DST_DIR) - $(VERBOSE)rm -f $(MUEN_CONF_FILE) - $(VERBOSE)rm -f $(MUEN_LOG) - -.PHONY: $(TARGET) diff --git a/repos/base-hw/src/lib/muen/muschedinfo.h b/repos/base-hw/src/lib/muen/muschedinfo.h deleted file mode 100644 index 503c67babf..0000000000 --- a/repos/base-hw/src/lib/muen/muschedinfo.h +++ /dev/null @@ -1,24 +0,0 @@ -/* - * \brief Muen scheduling group info - * \author Adrian-Ken Rueegsegger - * \date 2016-12-06 - */ - -/* - * Copyright (C) 2016 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#ifndef _BASE__MUEN__MUSCHEDINFO_H_ -#define _BASE__MUEN__MUSCHEDINFO_H_ - -#include - -struct Scheduling_info_type { - Genode::uint64_t tsc_schedule_start; - Genode::uint64_t tsc_schedule_end; -} __attribute__((packed, aligned (8))); - -#endif /* _BASE__MUEN_MUSCHEDINFO_H_ */ diff --git a/repos/base-hw/src/lib/muen/sinfo.cc b/repos/base-hw/src/lib/muen/sinfo.cc deleted file mode 100644 index dd57a61a4e..0000000000 --- a/repos/base-hw/src/lib/muen/sinfo.cc +++ /dev/null @@ -1,243 +0,0 @@ -/* - * \brief Muen subject information API impl - * \author Reto Buerki - * \date 2015-04-21 - */ - -/* - * Copyright (C) 2015-2017 Genode Labs GmbH - * - * This file is part of the Genode OS framework, which is distributed - * under the terms of the GNU Affero General Public License version 3. - */ - -#include -#include -#include - -#include - -#include "muschedinfo.h" - -#define roundup(x, y) ( \ -{ \ - const typeof(y) __y = y; \ - (((x) + (__y - 1)) / __y) * __y; \ -}) - -using namespace Genode; - -static_assert(sizeof(Sinfo::Subject_info_type) <= Sinfo::SIZE, - "Size of subject info type larger than Sinfo::SIZE."); - - -static const char * const content_names[] = { - "uninitialized", "fill", "file", -}; - -uint8_t no_hash[Sinfo::HASH_LENGTH] = {0}; - -/* Return true if given buffer contains a hash */ -static bool hash_available(const uint8_t * const first) -{ - return memcmp(first, no_hash, Sinfo::HASH_LENGTH) != 0; -} - - -static bool names_equal(const struct Sinfo::Name_type *const n1, - const char *const n2) -{ - return n1->length == strlen(n2) && strcmp(n1->data, n2) == 0; -} - - -/* Convert given hash to hex string */ -static char *hash_to_hex(char *buffer, const unsigned char *first) -{ - int i; - for (i = 0; i < Sinfo::HASH_LENGTH; i++) - snprintf(&buffer[i * 2], 3, "%02x", (unsigned int)*first++); - return buffer; -} - - -static bool log_resource(const struct Sinfo::Resource_type *const res, void *) -{ - char hash_str[65]; - - switch (res->kind) { - case Sinfo::RES_MEMORY: - Genode::log("muen-sinfo: memory [", - content_names[res->data.mem.content], - ", addr ", Genode::Hex(res->data.mem.address), - " size ", Genode::Hex(res->data.mem.size), " ", - res->data.mem.flags & Sinfo::MEM_WRITABLE_FLAG ? "rw" : "ro", - res->data.mem.flags & Sinfo::MEM_EXECUTABLE_FLAG ? "x" : "-", - res->data.mem.flags & Sinfo::MEM_CHANNEL_FLAG ? "c" : "-", - "] ", res->name.data); - - if (res->data.mem.content == Sinfo::CONTENT_FILL) - Genode::log("muen-sinfo: [pattern ", res->data.mem.pattern, "]"); - - if (hash_available(res->data.mem.hash)) - Genode::log("muen-sinfo: [hash 0x", - Genode::Cstring(hash_to_hex(hash_str, res->data.mem.hash)), - "]"); - break; - case Sinfo::RES_DEVICE: - Genode::log("muen-sinfo: device [sid ", Genode::Hex(res->data.dev.sid), - " IRTE/IRQ start ", res->data.dev.irte_start, - "/", res->data.dev.irq_start, - " IR count ", res->data.dev.ir_count, - " flags ", res->data.dev.flags, "] ", res->name.data); - break; - case Sinfo::RES_EVENT: - Genode::log("muen-sinfo: event [number ", res->data.number, "] ", res->name.data); - break; - case Sinfo::RES_VECTOR: - Genode::log("muen-sinfo: vector [number ", res->data.number, "] ", res->name.data); - break; - case Sinfo::RES_NONE: - break; - default: - Genode::log("muen-sinfo: UNKNOWN resource at address %p\n", - res); - break; - } - - return true; -} - - -Sinfo::Sinfo(const addr_t base_addr) -: - sinfo((Subject_info_type *)base_addr) -{ - const uint64_t sinfo_page_size = roundup(sizeof(Subject_info_type), 0x1000); - sched_info = ((Scheduling_info_type *)(base_addr + sinfo_page_size)); - - if (!check_magic()) { - Genode::warning("muen-sinfo: Subject information MAGIC mismatch"); - return; - } -} - - -bool Sinfo::check_magic(void) const -{ - return sinfo != 0 && sinfo->magic == MUEN_SUBJECT_INFO_MAGIC; -} - - -const char * Sinfo::get_subject_name(void) -{ - if (!check_magic()) - return nullptr; - - if (!subject_name_set) - { - memset(subject_name, 0, MAX_NAME_LENGTH + 1); - memcpy(subject_name, &sinfo->name.data, sinfo->name.length); - subject_name_set = true; - } - - return subject_name; -} - - -bool Sinfo::iterate_resources(struct iterator *const iter) const -{ - if (!iter->res) { - iter->res = &sinfo->resources[0]; - iter->idx = 0; - } else { - iter->res++; - iter->idx++; - } - return iter->idx < sinfo->resource_count - && iter->res->kind != RES_NONE; -} - - -const struct Sinfo::Resource_type * -Sinfo::get_resource(const char *const name, enum Resource_kind kind) const -{ - struct iterator i = { nullptr, 0 }; - - while (iterate_resources(&i)) - if (i.res->kind == kind && names_equal(&i.res->name, name)) - return i.res; - - return nullptr; -} - - -const struct Sinfo::Device_type * Sinfo::get_device(const uint16_t sid) const -{ - struct iterator i = { nullptr, 0 }; - - while (iterate_resources(&i)) - if (i.res->kind == RES_DEVICE && i.res->data.dev.sid == sid) - return &i.res->data.dev; - - return nullptr; -} - - -bool Sinfo::for_each_resource(resource_cb func, void *data) const -{ - struct iterator i = { nullptr, 0 }; - - while (iterate_resources(&i)) - if (!func(i.res, data)) - return 0; - - return 1; -} - - -uint64_t Sinfo::get_tsc_khz(void) const -{ - if (!check_magic()) - return 0; - - return sinfo->tsc_khz; -} - - -uint64_t Sinfo::get_sched_start(void) const -{ - if (!check_magic()) - return 0; - - return sched_info->tsc_schedule_start; -} - - -uint64_t Sinfo::get_sched_end(void) const -{ - if (!check_magic()) - return 0; - - return sched_info->tsc_schedule_end; -} - - -void Sinfo::log_status() -{ - if (!sinfo) { - Genode::log("Sinfo API not initialized"); - return; - } - if (!check_magic()) { - Genode::log("Sinfo MAGIC not found"); - return; - } - - const uint16_t count = sinfo->resource_count; - - Genode::log("muen-sinfo: Subject name is '", - Sinfo::get_subject_name(), "'"); - Genode::log("muen-sinfo: Subject exports ", count, " resources"); - for_each_resource(log_resource, nullptr); -} diff --git a/repos/base/run/platform_drv.inc b/repos/base/run/platform_drv.inc index be944b2928..f46d918130 100644 --- a/repos/base/run/platform_drv.inc +++ b/repos/base/run/platform_drv.inc @@ -2,7 +2,6 @@ proc have_platform_drv {} { return [expr [have_board imx53_qsb] \ || [have_board imx53_qsb_tz] \ || [have_board rpi] \ - || [have_board muen] \ || [have_board pc]] } @@ -14,7 +13,6 @@ proc usb_host_drv_binary { } { if {[have_board rpi]} { return rpi_usb_host_drv } if {[have_board imx6q_sabrelite]} { return imx6q_sabrelite_usb_host_drv } if {[have_board imx8q_evk]} { return imx8q_evk_usb_host_drv } - if {[have_board muen]} { return x86_pc_usb_host_drv } if {[have_board pc]} { return x86_pc_usb_host_drv } return no_usb_drv_available } @@ -25,7 +23,6 @@ proc usb_host_drv_binary { } { # proc audio_drv_binary { } { if {[have_board linux]} { return linux_audio_drv } - if {[have_board muen]} { return pci_audio_drv } if {[have_board pc]} { return pci_audio_drv } return no_audio_drv_available } @@ -49,7 +46,7 @@ proc acpi_drv_name { } { proc platform_drv_build_components {} { set drv_build_components "" lappend_if [have_platform_drv] drv_build_components drivers/platform - if {[have_board pc] || [have_board muen]} { + if {[have_board pc]} { lappend drv_build_components server/report_rom if {[acpi_drv_name] eq "acpi_drv"} { lappend drv_build_components drivers/acpi @@ -72,7 +69,6 @@ proc platform_drv_binary {} { if {[have_board imx53_qsb_tz]} { return imx53_platform_drv } if {[have_board rpi]} { return rpi_platform_drv } if {[have_board pc]} { return platform_drv } - if {[have_board muen]} { return platform_drv } return no_platform_drv_available } @@ -82,11 +78,7 @@ proc platform_drv_boot_modules {} { if {[have_spec x86]} { lappend drv_boot_modules report_rom - if {[have_board muen]} { - lappend drv_boot_modules acpi - } else { - lappend drv_boot_modules [acpi_drv_name] - } + lappend drv_boot_modules [acpi_drv_name] } return $drv_boot_modules diff --git a/repos/base/run/smp.run b/repos/base/run/smp.run index 95ad041f90..99bfed3c34 100644 --- a/repos/base/run/smp.run +++ b/repos/base/run/smp.run @@ -10,11 +10,6 @@ if { [get_cmd_switch --autopilot] && [have_include "power_on/qemu"] } { exit 0 } -if { [have_board muen] } { - puts "Run script is not supported on this platform" - exit 0 -} - build "core init test/smp" create_boot_directory diff --git a/repos/dde_linux/run/nic_router_uplinks.run b/repos/dde_linux/run/nic_router_uplinks.run index 1bf02ce547..b4013e6e48 100644 --- a/repos/dde_linux/run/nic_router_uplinks.run +++ b/repos/dde_linux/run/nic_router_uplinks.run @@ -1,4 +1,4 @@ -if {[expr ![have_spec nova] && ![have_spec sel4] && ![have_spec hw] && ![have_spec foc] || ![have_spec x86] || [have_include power_on/qemu] || [have_board muen]]} { +if {[expr ![have_spec nova] && ![have_spec sel4] && ![have_spec hw] && ![have_spec foc] || ![have_spec x86] || [have_include power_on/qemu]]} { puts "\n Run script is not supported on this platform. \n"; exit 0 } proc wifi_ssid {} { diff --git a/repos/dde_linux/run/usb_hid_raw.run b/repos/dde_linux/run/usb_hid_raw.run index 53ac9f4982..e495bc7fa0 100644 --- a/repos/dde_linux/run/usb_hid_raw.run +++ b/repos/dde_linux/run/usb_hid_raw.run @@ -38,12 +38,12 @@ # input events on the host PC. # -if { [have_board linux] || [have_board muen] } { - puts "Run script does not support Linux and Muen." +if {[have_board linux]} { + puts "Run script does not support Linux." exit 0 } -if { [get_cmd_switch --autopilot] && [have_include "power_on/qemu"] } { +if {[get_cmd_switch --autopilot] && [have_include "power_on/qemu"]} { puts "Run script does not support autopilot mode on Qemu" exit 0 } diff --git a/repos/dde_linux/run/usb_hid_reconnect.run b/repos/dde_linux/run/usb_hid_reconnect.run index 8dd75f6622..fd3062820c 100644 --- a/repos/dde_linux/run/usb_hid_reconnect.run +++ b/repos/dde_linux/run/usb_hid_reconnect.run @@ -5,18 +5,18 @@ assert_spec x86 -if { [have_spec linux] || [have_board muen] } { - puts "Run script does not support Linux and Muen." +if {[have_spec linux]} { + puts "Run script does not support Linux." exit 0 } -if { [get_cmd_switch --autopilot] && [have_include "power_on/qemu"] } { - puts "Run script does not support autopilot mode on Qemu" +if {[get_cmd_switch --autopilot] && [have_include "power_on/qemu"]} { + puts "Run script does not support autopilot mode on Qemu." exit 0 } -if { [get_cmd_switch --autopilot] && ![have_spec x86_64] } { - puts "Run script does not support autopilot mode on this platform" +if {[get_cmd_switch --autopilot] && ![have_spec x86_64]} { + puts "Run script does not support autopilot mode on this platform." exit 0 } diff --git a/repos/gems/recipes/pkg/drivers_nic-muen/README b/repos/gems/recipes/pkg/drivers_nic-muen/README deleted file mode 100644 index b9ad938515..0000000000 --- a/repos/gems/recipes/pkg/drivers_nic-muen/README +++ /dev/null @@ -1,3 +0,0 @@ - - Device drivers needed for scenarios - using one network interface diff --git a/repos/gems/recipes/pkg/drivers_nic-muen/archives b/repos/gems/recipes/pkg/drivers_nic-muen/archives deleted file mode 100644 index 1226882dba..0000000000 --- a/repos/gems/recipes/pkg/drivers_nic-muen/archives +++ /dev/null @@ -1,3 +0,0 @@ -_/src/platform_drv -_/src/ipxe_nic_drv -_/raw/drivers_nic-muen diff --git a/repos/gems/recipes/pkg/drivers_nic-muen/hash b/repos/gems/recipes/pkg/drivers_nic-muen/hash deleted file mode 100644 index 9633b2b187..0000000000 --- a/repos/gems/recipes/pkg/drivers_nic-muen/hash +++ /dev/null @@ -1 +0,0 @@ -2021-01-22 649375243e611123c3dbe98b84cfcb10e6fdbcf5 diff --git a/repos/gems/recipes/raw/drivers_nic-muen/content.mk b/repos/gems/recipes/raw/drivers_nic-muen/content.mk deleted file mode 100644 index 3bac2450ad..0000000000 --- a/repos/gems/recipes/raw/drivers_nic-muen/content.mk +++ /dev/null @@ -1,4 +0,0 @@ -content: drivers.config - -drivers.config: - cp $(REP_DIR)/recipes/raw/drivers_nic-muen/$@ $@ diff --git a/repos/gems/recipes/raw/drivers_nic-muen/drivers.config b/repos/gems/recipes/raw/drivers_nic-muen/drivers.config deleted file mode 100644 index b34c3a68c3..0000000000 --- a/repos/gems/recipes/raw/drivers_nic-muen/drivers.config +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/repos/gems/recipes/raw/drivers_nic-muen/hash b/repos/gems/recipes/raw/drivers_nic-muen/hash deleted file mode 100644 index 10c016af0d..0000000000 --- a/repos/gems/recipes/raw/drivers_nic-muen/hash +++ /dev/null @@ -1 +0,0 @@ -2021-01-22 59880f834aba427a44be3999aabd710b6d930e19 diff --git a/repos/libports/run/smartcard.run b/repos/libports/run/smartcard.run index 704c12c4b5..6bf412c2a2 100644 --- a/repos/libports/run/smartcard.run +++ b/repos/libports/run/smartcard.run @@ -5,8 +5,8 @@ # configured for the application and for the USB driver. # -if { [have_include "power_on/qemu"] || [have_spec linux] || [have_board muen] } { - puts "Run script does not support Qemu, Linux, and Muen" +if {[have_include "power_on/qemu"] || [have_spec linux]} { + puts "Run script does not support Qemu or Linux" exit 0 } diff --git a/repos/os/recipes/pkg/drivers_interactive-muen/README b/repos/os/recipes/pkg/drivers_interactive-muen/README deleted file mode 100644 index f3667e626d..0000000000 --- a/repos/os/recipes/pkg/drivers_interactive-muen/README +++ /dev/null @@ -1,3 +0,0 @@ - - Device drivers needed to run interactive - scenarios on Muen diff --git a/repos/os/recipes/pkg/drivers_interactive-muen/archives b/repos/os/recipes/pkg/drivers_interactive-muen/archives deleted file mode 100644 index 7017e1602b..0000000000 --- a/repos/os/recipes/pkg/drivers_interactive-muen/archives +++ /dev/null @@ -1,6 +0,0 @@ -_/src/platform_drv -_/src/ps2_drv -_/src/usb_drv -_/src/vesa_drv -_/src/event_filter -_/raw/drivers_interactive-muen diff --git a/repos/os/recipes/pkg/drivers_interactive-muen/hash b/repos/os/recipes/pkg/drivers_interactive-muen/hash deleted file mode 100644 index 9bc9fed534..0000000000 --- a/repos/os/recipes/pkg/drivers_interactive-muen/hash +++ /dev/null @@ -1 +0,0 @@ -2021-01-22 dfbca31669fc42cdef43f17685ca3a84e8d47f42 diff --git a/repos/os/recipes/raw/drivers_interactive-muen/content.mk b/repos/os/recipes/raw/drivers_interactive-muen/content.mk deleted file mode 100644 index 38b5b0334f..0000000000 --- a/repos/os/recipes/raw/drivers_interactive-muen/content.mk +++ /dev/null @@ -1,7 +0,0 @@ -content: drivers.config fb_drv.config event_filter.config en_us.chargen special.chargen - -drivers.config fb_drv.config event_filter.config: - cp $(REP_DIR)/recipes/raw/drivers_interactive-muen/$@ $@ - -en_us.chargen special.chargen: - cp $(REP_DIR)/src/server/event_filter/$@ $@ diff --git a/repos/os/recipes/raw/drivers_interactive-muen/drivers.config b/repos/os/recipes/raw/drivers_interactive-muen/drivers.config deleted file mode 100644 index ee76eaa725..0000000000 --- a/repos/os/recipes/raw/drivers_interactive-muen/drivers.config +++ /dev/null @@ -1,105 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/repos/os/recipes/raw/drivers_interactive-muen/event_filter.config b/repos/os/recipes/raw/drivers_interactive-muen/event_filter.config deleted file mode 100644 index 7df670248e..0000000000 --- a/repos/os/recipes/raw/drivers_interactive-muen/event_filter.config +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/repos/os/recipes/raw/drivers_interactive-muen/fb_drv.config b/repos/os/recipes/raw/drivers_interactive-muen/fb_drv.config deleted file mode 100644 index 24da699e27..0000000000 --- a/repos/os/recipes/raw/drivers_interactive-muen/fb_drv.config +++ /dev/null @@ -1 +0,0 @@ - diff --git a/repos/os/recipes/raw/drivers_interactive-muen/hash b/repos/os/recipes/raw/drivers_interactive-muen/hash deleted file mode 100644 index 44543ce59d..0000000000 --- a/repos/os/recipes/raw/drivers_interactive-muen/hash +++ /dev/null @@ -1 +0,0 @@ -2021-01-22 5dc9b2b9d1f7f7f7c7985d38ac4969ca90f5726a diff --git a/repos/os/run/cpu_bench.run b/repos/os/run/cpu_bench.run index 66fa2255cc..86db4cca31 100644 --- a/repos/os/run/cpu_bench.run +++ b/repos/os/run/cpu_bench.run @@ -52,7 +52,6 @@ proc bogomips_max_time { } { if {[have_spec x86_64]} { return 600 } if {[have_spec x86_32]} { return 3150 } } - if {[have_board muen]} { return 600 } return 0 } diff --git a/repos/os/run/input.run b/repos/os/run/input.run index 0c7b3b88ec..fbd05ac87e 100644 --- a/repos/os/run/input.run +++ b/repos/os/run/input.run @@ -10,7 +10,6 @@ source ${genode_dir}/repos/base/run/platform_drv.inc append_platform_drv_build_components lappend_if [have_board pc] build_components drivers/ps2 -lappend_if [have_board muen] build_components drivers/ps2 lappend_if [have_board linux] build_components drivers/framebuffer/sdl lappend_if [have_board linux] build_components server/nitpicker @@ -53,7 +52,7 @@ append config { append_platform_drv_config -append_if [expr [have_board pc] || [have_board muen]] config { +append_if [have_board pc] config { () + offset; + unsigned const offset = _dev_base(bdf) + addr; + char const * const field_ptr = _pciconf.local_addr() + offset; if (offset >= _pciconf_size) throw Invalid_mmio_access(); - /* - * Memory access code is implemented in a way to make it work - * with Muen subject monitor (SM) device emulation and also - * general x86 targets. On Muen, the simplified device - * emulation code (which also works for Linux) always returns - * 0xffff in EAX to indicate a non-existing device. Therefore, - * we enforce the usage of EAX in the following assembly - * templates. Also clear excess bits before return to guarantee - * the requested size. - */ switch (size) { + case Device::ACCESS_8BIT: if (track) _use_register(addr, 1); - asm volatile("movb %1,%%al" :"=a" (ret) :"m" (*((volatile unsigned char *)field)) :"memory"); - return ret & 0xff; + return *(uint8_t const *)field_ptr; + case Device::ACCESS_16BIT: if (track) _use_register(addr, 2); + return *(uint16_t const *)field_ptr; - asm volatile("movw %1,%%ax" :"=a" (ret) :"m" (*(volatile unsigned short *)field) :"memory"); - return ret & 0xffff; case Device::ACCESS_32BIT: if (track) _use_register(addr, 4); - - asm volatile("movl %1,%%eax" :"=a" (ret) :"m" (*(volatile unsigned int *)field) :"memory"); - return ret; - default: - return ~0U; + return *(uint32_t const *)field_ptr; } + return ~0U; } /** @@ -163,8 +149,8 @@ namespace Platform { unsigned const value, Device::Access_size const size, bool const track = true) { - unsigned const offset = _dev_base(bdf) + addr; - char const * const field = _pciconf.local_addr() + offset; + unsigned const offset = _dev_base(bdf) + addr; + char * const field_ptr = _pciconf.local_addr() + offset; if (offset >= _pciconf_size) throw Invalid_mmio_access(); @@ -174,23 +160,23 @@ namespace Platform { * for an explanation of the assembly templates */ switch (size) { + case Device::ACCESS_8BIT: if (track) _use_register(addr, 1); - - asm volatile("movb %%al,%1" : :"a" (value), "m" (*(volatile unsigned char *)field) :"memory"); + *(uint8_t volatile *)field_ptr = value; break; + case Device::ACCESS_16BIT: if (track) _use_register(addr, 2); - - asm volatile("movw %%ax,%1" : :"a" (value), "m" (*(volatile unsigned char *)field) :"memory"); + *(uint16_t volatile *)field_ptr = value; break; + case Device::ACCESS_32BIT: if (track) _use_register(addr, 4); - - asm volatile("movl %%eax,%1" : :"a" (value), "m" (*(volatile unsigned char *)field) :"memory"); + *(uint32_t volatile *)field_ptr = value; break; } } diff --git a/repos/ports/run/netperf_lwip_wifi.run b/repos/ports/run/netperf_lwip_wifi.run index d33003d19b..01c9b89e8e 100644 --- a/repos/ports/run/netperf_lwip_wifi.run +++ b/repos/ports/run/netperf_lwip_wifi.run @@ -11,11 +11,6 @@ if {[have_include "power_on/qemu"] || [have_include "power_on/linux"]} { exit 0 } -if { [have_spec muen] } { - puts "Run script does not support Muen." - exit 0 -} - if {[get_cmd_switch --autopilot] && [have_spec x86_32] && ![expr [have_board foc] || [have_spec nova]]} { puts stderr "\nNetperf WIFI running with non-ACPI kernel on native x86_32 test machine is not supported because of wrong interrupt number in pci config space (should be 11 instead 10).\n" diff --git a/repos/ports/run/netperf_lxip_wifi.run b/repos/ports/run/netperf_lxip_wifi.run index e127e641f6..802ebc7cd4 100644 --- a/repos/ports/run/netperf_lxip_wifi.run +++ b/repos/ports/run/netperf_lxip_wifi.run @@ -11,11 +11,6 @@ if {[have_include "power_on/qemu"] || [have_include "power_on/linux"]} { exit 0 } -if { [have_board muen] } { - puts "Run script does not support Muen." - exit 0 -} - if {[get_cmd_switch --autopilot] && [have_spec x86_32] && ![expr [have_board foc] || [have_spec nova]]} { puts stderr "\nNetperf WIFI running with non-ACPI kernel on native x86_32 test machine is not supported because of wrong interrupt number in pci config space (should be 11 instead 10).\n" diff --git a/repos/ports/run/vbox_share.inc b/repos/ports/run/vbox_share.inc index 357a4dc05e..0d547aa211 100644 --- a/repos/ports/run/vbox_share.inc +++ b/repos/ports/run/vbox_share.inc @@ -62,14 +62,13 @@ if {[have_include "power_on/qemu"]} { exit 0 } -# Tested for nova and muen. -if {(![have_spec nova] && ![have_board muen])} { +# Tested for nova +if {![have_spec nova]} { puts "Platform is unsupported." exit 0 } set virtualbox_binary "virtualbox-rem" -if {[have_board muen]} { set virtualbox_binary "virtualbox-muen" } if {[have_spec nova]} { set virtualbox_binary "virtualbox-nova" } set virtualbox5_binary "virtualbox5-rem" if {[have_spec nova]} { set virtualbox5_binary "virtualbox5-nova" } diff --git a/repos/ports/run/virtualbox_auto.inc b/repos/ports/run/virtualbox_auto.inc index 2d13e56f6b..fbc8fe5ec1 100644 --- a/repos/ports/run/virtualbox_auto.inc +++ b/repos/ports/run/virtualbox_auto.inc @@ -350,7 +350,7 @@ append_if [expr $use_usb] config { } -append_if [expr [have_board pc] || [have_board muen]] config { +append_if [have_board pc] config { @@ -401,11 +401,10 @@ lappend_if [expr $use_cpu_load] boot_modules top lappend_if [have_spec nova] boot_modules log_core # platform-specific modules -lappend_if [expr $use_ps2] boot_modules ps2_drv -lappend_if [expr $use_usb] boot_modules usb_drv -lappend_if [expr $use_usb] boot_modules usb_report_filter -lappend_if [have_board pc] boot_modules vesa_fb_drv -lappend_if [have_board muen] boot_modules vesa_fb_drv -lappend_if [have_spec x86] boot_modules rtc_drv +lappend_if [expr $use_ps2] boot_modules ps2_drv +lappend_if [expr $use_usb] boot_modules usb_drv +lappend_if [expr $use_usb] boot_modules usb_report_filter +lappend_if [have_board pc] boot_modules vesa_fb_drv +lappend_if [have_spec x86] boot_modules rtc_drv append_platform_drv_boot_modules diff --git a/tool/builddir/build.conf/run_x86_64 b/tool/builddir/build.conf/run_x86_64 index 54dc1e93d2..77d0210666 100644 --- a/tool/builddir/build.conf/run_x86_64 +++ b/tool/builddir/build.conf/run_x86_64 @@ -1,18 +1,10 @@ # kernel to use (nova, hw, sel4, linux, or foc) #KERNEL ?= nova -# board to use (pc, linux, or muen) +# board to use (pc or linux) BOARD ?= pc # local variable for run-tool arguments that depend on the used board -BOARD_RUN_OPT(muen) = --include image/muen -BOARD_RUN_OPT(muen) += --image-muen-hardware hardware/lenovo-t430s.xml -BOARD_RUN_OPT(muen) += --image-muen-platform platform/lenovo-t430s.xml -BOARD_RUN_OPT(muen) += --image-muen-gnat-path /opt/gnat -BOARD_RUN_OPT(muen) += --image-muen-spark-path /opt/spark -BOARD_RUN_OPT(muen) += --image-muen-system xml/genode-base_hw.xml -BOARD_RUN_OPT(muen) += --image-muen-components 'libdebuglog libmudm libmutime libxhcidbg dbgserver sm time' -BOARD_RUN_OPT(muen) += --image-muen-external-build 0 BOARD_RUN_OPT(linux) = --include power_on/linux --include log/linux BOARD_RUN_OPT(pc) = $(QEMU_RUN_OPT) diff --git a/tool/run/boot_dir/hw b/tool/run/boot_dir/hw index ba92c3b356..d3f854a9f8 100644 --- a/tool/run/boot_dir/hw +++ b/tool/run/boot_dir/hw @@ -39,13 +39,6 @@ proc core_link_address { } { # proc run_boot_dir {binaries} { - # generate static ACPI report for platform driver on Muen - if {[have_board "muen"]} { - set fh [open "bin/acpi" "WRONLY CREAT TRUNC"] - puts $fh "" - close $fh - } - # # Build bootstrap, the core object, and the dynamic linker on demand # @@ -174,14 +167,8 @@ proc run_boot_dir {binaries} { # Generate pulsar config file # set fh [open "[run_dir]/config-52-54-00-12-34-56" "WRONLY CREAT TRUNC"] - if {[have_board "muen"]} { - exec gzip [run_dir]/image.bin - puts $fh " exec /boot/unzip" - puts $fh " load /image.bin.gz" - } else { - puts $fh " exec /boot/bender" - puts $fh " load /boot/image.elf" - } + puts $fh " exec /boot/bender" + puts $fh " load /boot/image.elf" close $fh generate_tftp_config @@ -194,13 +181,9 @@ proc run_boot_dir {binaries} { set fh [open "[run_dir]/boot.cfg" "WRONLY CREAT TRUNC"] puts $fh "#!ipxe" - if {[have_board "muen"]} { - puts $fh "kernel image.bin" - } else { - install_pxe_bootloader_to_run_dir - puts $fh "kernel boot/bender" - puts $fh "module boot/image.elf" - } + install_pxe_bootloader_to_run_dir + puts $fh "kernel boot/bender" + puts $fh "module boot/image.elf" puts $fh "boot" close $fh diff --git a/tool/run/depot.inc b/tool/run/depot.inc index b8303e1380..b72010f974 100644 --- a/tool/run/depot.inc +++ b/tool/run/depot.inc @@ -459,7 +459,6 @@ proc check_for_missing_depot_archives { } { proc drivers_interactive_pkg { } { - if {[have_board muen]} { return drivers_interactive-muen } if {[have_board linux]} { return drivers_interactive-linux } if {[have_board pc]} { return drivers_interactive-pc } if {[have_board pbxa9]} { return drivers_interactive-pbxa9 } @@ -478,7 +477,6 @@ proc drivers_interactive_pkg { } { proc drivers_nic_pkg { } { if {[have_board pc]} { return drivers_nic-pc } - if {[have_board muen]} { return drivers_nic-muen } if {[have_board linux]} { return drivers_nic-linux } if {[have_board pbxa9]} { return drivers_nic-pbxa9 } if {[have_board rpi]} { return drivers_nic-rpi } diff --git a/tool/run/image/muen b/tool/run/image/muen deleted file mode 100644 index de6c6316cf..0000000000 --- a/tool/run/image/muen +++ /dev/null @@ -1,87 +0,0 @@ -## -# Muen system image configuration parameters -# -# \param --image-muen-external-build Muen system is built automatically or externally -# \param --image-muen-system Muen system policy -# \param --image-muen-components Muen system components -# \param --image-muen-hardware Muen hardware specification -# \param --image-muen-platform Muen platform specification -# \param --image-muen-gnat-path Path to GNAT toolchain -# \param --image-muen-spark-path Path to SPARK toolchain -# - -proc muen_external { } { - return [get_cmd_arg --image-muen-external-build "0"] -} - -proc muen_system { } { - return [get_cmd_arg --image-muen-system ""] -} -proc muen_components { } { - return [get_cmd_arg --image-muen-components ""] -} - -proc muen_hardware { } { - return [get_cmd_arg --image-muen-hardware ""] -} - -proc muen_platform { } { - return [get_cmd_arg --image-muen-platform ""] -} - -proc muen_gnat_path { } { - return [get_cmd_arg --image-muen-gnat-path "/usr/gnat"] -} - -proc muen_spark_path { } { - return [get_cmd_arg --image-muen-spark-path "/opt/spark2014"] -} - -## -# Build and integrate Muen system image -# -# \param elf_img ELF binary of Genode subject -# -proc run_image {elf_img} { - if {![have_board "muen"]} { - puts stderr "You've to build for the BOARD=muen" - exit -1 - } - - # For external Muen system integration there is nothing left to do. - if {[muen_external]} { - puts "build finished due to external Muen system integration" - exit 0 - } - - # - # Generate Muen build config file - # - set fh [open "[run_dir]/muen.conf" "WRONLY CREAT TRUNC"] - puts $fh "GNAT_PATH = [muen_gnat_path]" - puts $fh "SPARK_PATH = [muen_spark_path]" - puts $fh "SYSTEM = [muen_system]" - puts $fh "COMPONENTS = \"[muen_components]\"" - puts $fh "HARDWARE = [muen_hardware]" - puts $fh "PLATFORM = [muen_platform]" - close $fh - - # - # Build Muen kernel - # - puts "using Muen system policy '[muen_system]' on platform '[muen_hardware]'" - if {![file exists kernel]} { exec mkdir kernel } - exec cp [run_dir]/muen.conf kernel/muen.conf - build kernel - - # Use raw binary object for base-hw on Muen - set bin_img "[run_dir]/[run_name].bin" - exec [cross_dev_prefix]objcopy -O binary $elf_img $bin_img - - # - # Package Muen system image - # - exec cp $bin_img "kernel/muen/policy/obj/base_hw" - exec make -C kernel/muen/pack SYSTEM=[muen_system] HARDWARE=[muen_hardware] PLATFORM=[muen_platform] - exec cp kernel/muen/pack/obj/muen.img "[run_dir]/image.bin" -}