]> xenbits.xensource.com Git - unikraft/unikraft.git/log
unikraft/unikraft.git
17 months agoMerge remote-tracking branch 'DeliaPavel/comments_lib_posix-user' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:33 +0000 (17:39 +0200)]
Merge remote-tracking branch 'DeliaPavel/comments_lib_posix-user' into testing

17 months agoMerge remote-tracking branch 'cocodery/issue1147' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:30 +0000 (17:39 +0200)]
Merge remote-tracking branch 'cocodery/issue1147' into testing

17 months agoMerge remote-tracking branch 'eduardvintila/go-fixes' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:28 +0000 (17:39 +0200)]
Merge remote-tracking branch 'eduardvintila/go-fixes' into testing

17 months agoMerge remote-tracking branch 'kubanrob/ukboot-dep' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:26 +0000 (17:39 +0200)]
Merge remote-tracking branch 'kubanrob/ukboot-dep' into testing

17 months agoMerge remote-tracking branch 'kubanrob/someconfig_targets' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:24 +0000 (17:39 +0200)]
Merge remote-tracking branch 'kubanrob/someconfig_targets' into testing

17 months agoMerge remote-tracking branch 'kubanrob/the-chosen-node' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:22 +0000 (17:39 +0200)]
Merge remote-tracking branch 'kubanrob/the-chosen-node' into testing

17 months agoMerge remote-tracking branch 'kubanrob/fix-tlb-aarch64' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:20 +0000 (17:39 +0200)]
Merge remote-tracking branch 'kubanrob/fix-tlb-aarch64' into testing

17 months agoMerge remote-tracking branch 'mogasergiu/smoga/fstab_initrd_fix' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:18 +0000 (17:39 +0200)]
Merge remote-tracking branch 'mogasergiu/smoga/fstab_initrd_fix' into testing

17 months agoMerge remote-tracking branch 'craciunoiuc/craciunoiuc/pr-label-action' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:16 +0000 (17:39 +0200)]
Merge remote-tracking branch 'craciunoiuc/craciunoiuc/pr-label-action' into testing

17 months agoMerge remote-tracking branch 'craciunoiuc/craciunoiuc/checkpatch-action' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:14 +0000 (17:39 +0200)]
Merge remote-tracking branch 'craciunoiuc/craciunoiuc/checkpatch-action' into testing

17 months agoMerge remote-tracking branch 'craciunoiuc/craciunoiuc/dependabot-actions' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:12 +0000 (17:39 +0200)]
Merge remote-tracking branch 'craciunoiuc/craciunoiuc/dependabot-actions' into testing

17 months agoMerge remote-tracking branch 'craciunoiuc/craciunoiuc/pr-formatting-checks' into...
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:10 +0000 (17:39 +0200)]
Merge remote-tracking branch 'craciunoiuc/craciunoiuc/pr-formatting-checks' into testing

17 months agoMerge remote-tracking branch 'craciunoiuc/craciunoiuc/add-workflow-linting' into...
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:07 +0000 (17:39 +0200)]
Merge remote-tracking branch 'craciunoiuc/craciunoiuc/add-workflow-linting' into testing

17 months agoMerge remote-tracking branch 'craciunoiuc/craciunoiuc/add-python-linting-for-scripts...
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:05 +0000 (17:39 +0200)]
Merge remote-tracking branch 'craciunoiuc/craciunoiuc/add-python-linting-for-scripts' into testing

17 months agoMerge remote-tracking branch 'craciunoiuc/craciunoiuc/add-shellcheck-for-scripts...
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:03 +0000 (17:39 +0200)]
Merge remote-tracking branch 'craciunoiuc/craciunoiuc/add-shellcheck-for-scripts' into testing

17 months agoMerge remote-tracking branch 'andreittr/ttr/static-inits' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:39:01 +0000 (17:39 +0200)]
Merge remote-tracking branch 'andreittr/ttr/static-inits' into testing

17 months agoMerge remote-tracking branch 'andreittr/ttr/atomic-and' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:38:59 +0000 (17:38 +0200)]
Merge remote-tracking branch 'andreittr/ttr/atomic-and' into testing

17 months agoMerge remote-tracking branch 'mschlumpp/mschlumpp/feature/crashscreen' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:38:57 +0000 (17:38 +0200)]
Merge remote-tracking branch 'mschlumpp/mschlumpp/feature/crashscreen' into testing

17 months agoMerge remote-tracking branch 'kha-dinh/retry-exitbootservice' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:38:55 +0000 (17:38 +0200)]
Merge remote-tracking branch 'kha-dinh/retry-exitbootservice' into testing

17 months agoMerge remote-tracking branch 'CajuM/PR-headers_install' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:38:53 +0000 (17:38 +0200)]
Merge remote-tracking branch 'CajuM/PR-headers_install' into testing

17 months agoMerge remote-tracking branch 'ungps/pci-fixes' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:38:52 +0000 (17:38 +0200)]
Merge remote-tracking branch 'ungps/pci-fixes' into testing

17 months agoMerge remote-tracking branch 'Starnox/file_operations' into testing
Razvan Deaconescu [Wed, 29 Nov 2023 15:38:50 +0000 (17:38 +0200)]
Merge remote-tracking branch 'Starnox/file_operations' into testing

17 months agovfscore: Move fd handling into posix-fdtab
Andrei Tatar [Tue, 21 Nov 2023 20:11:46 +0000 (21:11 +0100)]
vfscore: Move fd handling into posix-fdtab

This change moves the file descriptor table out of vfscore, along with
the fd-specific syscalls close and dup*.
Implementations of vfscore files are also patched to use posix-fdtab.

Checkpatch-Ignore: USE_NEGATIVE_ERRNO
Checkpatch-Ignore: LINE_SPACING
Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1168

17 months agolib/posix-fdtab: Add legacy interface for vfscore
Andrei Tatar [Tue, 21 Nov 2023 19:34:43 +0000 (20:34 +0100)]
lib/posix-fdtab: Add legacy interface for vfscore

This change adds support for legacy vfscore files to posix-fdtab,
allowing both new uk_ofiles and vfscore files to be used simultaneously.
This includes legacy as well as type-agnostic ("shim") API additions.

Checkpatch-Ignore: UNNECESSARY_ELSE
Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1168

17 months agolib/posix-fdtab: Introduce fdtab library
Andrei Tatar [Tue, 21 Nov 2023 19:22:23 +0000 (20:22 +0100)]
lib/posix-fdtab: Introduce fdtab library

This change introduces the posix-fdtab library, tasked with managing the
file descriptor table, mapping integers to open file descriptions.
posix-fdtab exposes functionality through Unikraft-internal APIs and is
independent from the file descriptor table implementation in vfscore,
which it aims to replace.

Checkpatch-Ignore: VOLATILE
Checkpatch-Ignore: LINE_SPACING
Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1168

17 months agolib/ukfile: Introduce the ukfile library
Andrei Tatar [Mon, 20 Nov 2023 15:20:25 +0000 (16:20 +0100)]
lib/ukfile: Introduce the ukfile library

This change introduces the ukfile library to provide a new fundamental
abstraction for "files" in Unikraft. This forms the base for a larger
rearchitecting of vfscore.

Checkpatch-Ignore: ENOSYS
Checkpatch-Ignore: VOLATILE
Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1165

17 months agoinclude/arch: Add atomic fetch & AND operation
Andrei Tatar [Mon, 2 Oct 2023 18:58:34 +0000 (20:58 +0200)]
include/arch: Add atomic fetch & AND operation

This change adds a Unikraft macro for an architecture's atomic fetch &
AND operation, similar to the fetch & OR we already have.
It also fixes the order of the fetch & OR operations to be truthful to
the docstring.

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1125

17 months agolib/uklock: Add static initializer for uk_rwlock
Andrei Tatar [Mon, 2 Oct 2023 19:07:40 +0000 (21:07 +0200)]
lib/uklock: Add static initializer for uk_rwlock

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1126

17 months agolib/uksched: Export static wait queue initializer
Andrei Tatar [Mon, 2 Oct 2023 19:04:47 +0000 (21:04 +0200)]
lib/uksched: Export static wait queue initializer

This change adds the convenience macro `UK_WAIT_QUEUE_INITIALIZER` to
the public API of uksched, enabling external code to use initializers
for embedded wait queues.

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1126

17 months agoinclude/: Add static initializer for refcounts
Andrei Tatar [Mon, 2 Oct 2023 19:02:41 +0000 (21:02 +0200)]
include/: Add static initializer for refcounts

Checkpatch-Ignore: SPACING
Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1126

17 months agoinclude: Add strong/weak reference counting
Andrei Tatar [Thu, 16 Nov 2023 18:04:30 +0000 (19:04 +0100)]
include: Add strong/weak reference counting

This change adds a utility header implementing a reference counting
scheme that supports regular (strong) as well as weak references.

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1160

17 months agolib/ukcpio: Optimize path handling
Andrei Tatar [Wed, 16 Aug 2023 22:45:39 +0000 (00:45 +0200)]
lib/ukcpio: Optimize path handling

This change removes redundant string copies of the destination
extraction path, dropping about half of the total string copy ops.
In addition, some minor code style changes included.

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1181

17 months agolib/ukcpio: Refactor CPIO extraction
Andrei Tatar [Wed, 16 Aug 2023 22:00:31 +0000 (00:00 +0200)]
lib/ukcpio: Refactor CPIO extraction

This change reorganizes the CPIO extraction code, making the parsing of
header fields more explicit, as well as splitting functionality into
dedicated handling functions.

Checkpatch-Ignore: CODE_INDENT
Checkpatch-Ignore: LEADING_SPACE
Checkpatch-Ignore: LINE_SPACING
Checkpatch-Ignore: UNNECESSARY_ELSE
Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1181

17 months agolib/ukcpio: Clean up & organize code
Andrei Tatar [Wed, 16 Aug 2023 17:58:24 +0000 (19:58 +0200)]
lib/ukcpio: Clean up & organize code

This change is a minor code cleanup with no significant logic changes,
in preparation for a larger refactoring; it includes:
- improved macros with more logical ordering
- code deduplication
- cleaner structured `read_section` function

Checkpatch-Ignore: COMPLEX_MACRO
Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1181

17 months agolib/uktimeconv: Add conversion functions
Andrei Tatar [Thu, 16 Nov 2023 18:22:22 +0000 (19:22 +0100)]
lib/uktimeconv: Add conversion functions

This change adds a header with utility functions related to various time
formats defined by standard C or POSIX.
This header depends on time headers provided by (no)libc.

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1162

17 months agolib/uklock: Add static initializer for uk_rwlock 1126/head
Andrei Tatar [Mon, 2 Oct 2023 19:07:40 +0000 (21:07 +0200)]
lib/uklock: Add static initializer for uk_rwlock

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
17 months agolib/uksched: Export static wait queue initializer
Andrei Tatar [Mon, 2 Oct 2023 19:04:47 +0000 (21:04 +0200)]
lib/uksched: Export static wait queue initializer

This change adds the convenience macro `UK_WAIT_QUEUE_INITIALIZER` to
the public API of uksched, enabling external code to use initializers
for embedded wait queues.

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
17 months agoinclude/: Add static initializer for refcounts
Andrei Tatar [Mon, 2 Oct 2023 19:02:41 +0000 (21:02 +0200)]
include/: Add static initializer for refcounts

Checkpatch-Ignore: SPACING
Signed-off-by: Andrei Tatar <andrei@unikraft.io>
17 months agolib/nolibc,lib/isrlib: Fix strncpy
Christiano Haesbaert [Wed, 5 Jul 2023 13:00:11 +0000 (15:00 +0200)]
lib/nolibc,lib/isrlib: Fix strncpy

strncpy will produce different results for an empty string depending on the
preceding value of dst:

char buf[4];

bzero(buf, sizeof(buf));
buf[0] = 0;
buf[1] = 9;
strncpy(&buf[1], "", 3);

"clen" will be 0 since strnlen("") is 0, which will then look into dst[-1]
(buf[0]) to decide if it terminates dst or not.

Instead of working around, replace strncpy for a conformant version, taken
from OpenBSD libkern, as a bonus we zero out the remaining buffer.

https://github.com/openbsd/src/blob/master/sys/lib/libkern/strncpy.c

Signed-off-by: Christiano Haesbaert <haesbaert@haesbaert.org>
Reviewed-by: Eduard-Florin Mihailescu <mihailescu.eduard@gmail.com>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #973

17 months agoinclude/arch: Make time constants signed
Andrei Tatar [Tue, 7 Nov 2023 13:59:41 +0000 (14:59 +0100)]
include/arch: Make time constants signed

This change removes the unsigned marker on integer literals that define
time-related constants, as there is no logical reason for time to always
be positive. This also alleviates mixed-signedness warnings when doing
arithmetic on time values, as well as assigning to __snsec.

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1157

17 months agoinclude/arch: Add raw compare-exchange operation
Andrei Tatar [Tue, 7 Nov 2023 13:53:45 +0000 (14:53 +0100)]
include/arch: Add raw compare-exchange operation

This change adds a Unikraft macro for the raw compare-exchange
operation, which in contrast to the existing macro may modify its
arguments.

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1156

17 months agolib/vfscore: Fix crash in fstatat on NULL args
Andrei Tatar [Tue, 7 Nov 2023 14:12:30 +0000 (15:12 +0100)]
lib/vfscore: Fix crash in fstatat on NULL args

This change makes fstatat gracefully handle NULL arguments by returning
-EFAULT, preventing a hard crash.

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1155

17 months agolib/posix-time: Allow NULL arg in clock_getres
Andrei Tatar [Tue, 7 Nov 2023 14:06:48 +0000 (15:06 +0100)]
lib/posix-time: Allow NULL arg in clock_getres

This change fixes the behavior of clock_getres to not return an error
when receiving a NULL as its output argument, in accordance with docs.

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1154

17 months agolib/posix-user: Add comments for posix-user
Delia Pavel [Mon, 20 Nov 2023 20:27:40 +0000 (22:27 +0200)]
lib/posix-user: Add comments for posix-user

Signed-off-by: Delia-Maria Pavel <delia_maria.pavel@stud.acs.upb.ro>
17 months agolib/devfs: Remove dependency on `LIBVFSCORE_AUTOMOUNT_ROOTFS`
Sergiu Moga [Mon, 23 Oct 2023 16:19:05 +0000 (19:19 +0300)]
lib/devfs: Remove dependency on `LIBVFSCORE_AUTOMOUNT_ROOTFS`

Now that we have `fstab`, we no longer depend on something mounting
a rootfs being preconfigured within the kernel. A user may simply
choose to specify rootfs through the `vfs.fstab` command-line
argument.

Signed-off-by: Sergiu Moga <sergiu@unikraft.io>
Reviewed-by: Alexander Jung <alex@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1146

17 months agobuild: Introduce `UK_IMAGE_NAME_OVERWRITE` make var
Alexander Jung [Wed, 22 Nov 2023 13:46:33 +0000 (14:46 +0100)]
build: Introduce `UK_IMAGE_NAME_OVERWRITE` make var

This commit introduces a new make variable,
`UK_IMAGE_NAME_OVERWRITE`, which is used to customize the
output binary name of the kernel image.  This is a special,
and experimental, variable which can be helpful in certain
use cases, for example where targets with the same architecture
and platform are present.  This variable should be used in
conjunction with a different build directory, `O=`, as the
resulting binary will always have the name from this option.

Signed-off-by: Alexander Jung <alex@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1169

17 months agolib/uknetdev: Add ipv4_dns0_addr configuration
Marco Schlumpp [Mon, 27 Feb 2023 14:15:58 +0000 (15:15 +0100)]
lib/uknetdev: Add ipv4_dns0_addr configuration

Previously, we were only able to statically configure the ip address,
netmask, and gateway, but not the DNS server. This commit adds the
configuration option for a DNS server.

Signed-off-by: Marc Rittinghaus <marc.rittinghaus@kit.edu>
Signed-off-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Simon Kuenzer <simon@unikraft.io>
Approved-by: Simon Kuenzer <simon@unikraft.io>
GitHub-Closes: #1167

17 months agolib/ukrust: Fix compilation fialure when enable libukrust
cocodery [Mon, 20 Nov 2023 04:33:41 +0000 (12:33 +0800)]
lib/ukrust: Fix compilation fialure when enable libukrust

This commit aims to fix issue#1147 which compile apps with enabled
libukrust

1. ukrust/Makefile.uk: fix command line argument with high-version
   bindgen, from 'size_t-is-usize' to 'no-size_t-is-usize'.
2. ukrust/src/allocator.rs: fix previous defined symbol by comment
   them, becasue rustc will help to resolve, and add new symbol
'__rust_no_alloc_shim_is_unstable' for locate.

Signed-off-by: Chris Wu <cocodery@outlook.com>
17 months agobuild: guarantee files generated by awk-file before others rely on them
cocodery [Fri, 17 Nov 2023 16:17:03 +0000 (00:17 +0800)]
build: guarantee files generated by awk-file before others rely on them

Fix sub-problem of issue#1147 when enable libukrust, which will throw an error that
`fatal error: 'uk/bits/libid.h' file not found` because of wrong commands order.
this header file is needed by `bindings_helper.h` but command generates
'uk/bits/libid/h' is ahead from the bindgen command.

Signed-off-by: Chris Wu <cocodery@outlook.com>
17 months agolib/posix-process: Use builtin `exit` flags only for C and CXX sources
Eduard Vintilă [Sun, 12 Nov 2023 13:59:20 +0000 (15:59 +0200)]
lib/posix-process: Use builtin `exit` flags only for C and CXX sources

The `-fno-builtin-exit` and `-fno-builtin-exit-group` flags are not
available for Golang sources, so keep them only for C and C++.

Signed-off-by: Eduard Vintilă <eduard.vintila47@gmail.com>
17 months agoplat/common/arm: Zero out `x29` and `x30` before stack switch
Eduard Vintilă [Sun, 12 Nov 2023 13:54:34 +0000 (15:54 +0200)]
plat/common/arm: Zero out `x29` and `x30` before stack switch

In order to properly mark the end of a stacktrace and avoid
undefined behaviour during unwinding, both the frame pointer
(`x29`) and the link register (`x30`) should be
zeroed out before switching to a new stack.

Signed-off-by: Eduard Vintilă <eduard.vintila47@gmail.com>
18 months agoinclude/arch: Add atomic fetch & AND operation 1125/head
Andrei Tatar [Mon, 2 Oct 2023 18:58:34 +0000 (20:58 +0200)]
include/arch: Add atomic fetch & AND operation

This change adds a Unikraft macro for an architecture's atomic fetch &
AND operation, similar to the fetch & OR we already have.
It also fixes the order of the fetch & OR operations to be truthful to
the docstring.

Signed-off-by: Andrei Tatar <andrei@unikraft.io>
18 months ago.github/workflows: Add shellcheck for scripts 1133/head
Cezar Craciunoiu [Sat, 14 Oct 2023 08:09:35 +0000 (11:09 +0300)]
.github/workflows: Add shellcheck for scripts

Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@gmail.com>
18 months ago.github/workflows: Add python checks for support scripts 1134/head
Cezar Craciunoiu [Sat, 14 Oct 2023 09:02:59 +0000 (12:02 +0300)]
.github/workflows: Add python checks for support scripts

Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@gmail.com>
18 months ago.github/workflows: Add github workflows checks 1137/head
Cezar Craciunoiu [Sat, 14 Oct 2023 09:22:13 +0000 (12:22 +0300)]
.github/workflows: Add github workflows checks

Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@gmail.com>
18 months ago.github/workflows: Add commit and PR format checks 1139/head
Cezar Craciunoiu [Mon, 16 Oct 2023 12:50:53 +0000 (15:50 +0300)]
.github/workflows: Add commit and PR format checks

Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@gmail.com>
18 months ago.github: Enable dependabot for action bumping 1140/head
Cezar Craciunoiu [Mon, 16 Oct 2023 13:20:26 +0000 (16:20 +0300)]
.github: Enable dependabot for action bumping

Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@gmail.com>
18 months agoplat/common: Add commit to destroy checkpatch
Cezar Craciunoiu [Mon, 16 Oct 2023 14:32:54 +0000 (17:32 +0300)]
plat/common: Add commit to destroy checkpatch

Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@gmail.com>
18 months ago.github/workflows: Add checkpatch checks for commits
Cezar Craciunoiu [Mon, 16 Oct 2023 14:06:17 +0000 (17:06 +0300)]
.github/workflows: Add checkpatch checks for commits

Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@gmail.com>
18 months ago.github/workflows: Add PR auto-labelling
Cezar Craciunoiu [Mon, 16 Oct 2023 14:23:30 +0000 (17:23 +0300)]
.github/workflows: Add PR auto-labelling

Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@gmail.com>
18 months ago.github/labels: Add labels list for syncing
Cezar Craciunoiu [Mon, 16 Oct 2023 14:24:51 +0000 (17:24 +0300)]
.github/labels: Add labels list for syncing

Signed-off-by: Cezar Craciunoiu <cezar.craciunoiu@gmail.com>
18 months agoplat/common: Fix missing chosen node handling 1151/head
Robert Kuban [Tue, 31 Oct 2023 00:43:40 +0000 (01:43 +0100)]
plat/common: Fix missing chosen node handling

`fdt_path_offset` returns an negative value on error.
Instead of checking for an zero return value, check for a negative value.

Signed-off-by: Robert Kuban <robert.kuban@opensynergy.com>
18 months agobuild: Import .config for noconfig targets 1152/head
Robert Kuban [Tue, 31 Oct 2023 16:18:23 +0000 (17:18 +0100)]
build: Import .config for noconfig targets

Most of the noconfig_targets still need to import parts
of the .config if it is available:

- `COMMON_CONFIG_ENV` imports values from the .config
- `savedefconfig` uses `UK_ARCH`

Signed-off-by: Robert Kuban <robert.kuban@opensynergy.com>
18 months agoukboot: Remove explicit PLAT_KVM dependency 1153/head
Robert Kuban [Fri, 8 Sep 2023 08:52:12 +0000 (10:52 +0200)]
ukboot: Remove explicit PLAT_KVM dependency

Remove an explicit PLAT_KVM dependency in LIBUKBOOT_HEAP_BASE
to allow plattforms other then plat/kvm to let ukboot to
initialize the heap with paging enabled.

Comment removed in 439868bd0b8d6bb97a40323e9a9df548e080507a:

> TODO: This is temporary until all platforms/archs supporting paging
>       have switched to not initialize the heap in the platform.

LIBUKBOOT_HEAP_BASE also depends on `HAVE_PAGING && !LIBUKBOOT_NOALLOC`,
whereas both plat/linuxu and plat/xen depend on `!HAVE_PAGING`.

If LIBUKBOOT_HEAP_BASE is not enabled, `heap_init` already assumes paging
is not enabled, so platforms with:

    HAVE_PAGING && !LIBUKBOOT_NOALLOC && !LIBUKBOOT_HEAP_BASE

are not currently supported by ukboot.

Signed-off-by: Robert Kuban <robert.kuban@opensynergy.com>
18 months agoarch/arm64: Fix `ukarch_tlb_flush_entry` 1149/head
Robert Kuban [Fri, 27 Oct 2023 13:51:29 +0000 (15:51 +0200)]
arch/arm64: Fix `ukarch_tlb_flush_entry`

Fix a bug in `ukarch_tlb_flush_entry` that leads to the TLB entry
not being invalidated on arm64.

The argument `X` of `tlbi vaae1is, X` is not the virtual address,
but a field that contains the bits 55:12 of the virtual address in
the bits 43:0. The remaining bits of this field (RES0,TTL) are valid
being set to 0.

Store the virtual address at the proper location in the argument.

Signed-off-by: Robert Kuban <robert.kuban@opensynergy.com>
18 months agolib/vfscore: Re-enable the mounting of `initrd`'s through `fstab`
Sergiu Moga [Mon, 23 Oct 2023 13:41:54 +0000 (16:41 +0300)]
lib/vfscore: Re-enable the mounting of `initrd`'s through `fstab`

After commit 9946c9329346 ("lib/vfscore: Embedded initrd"), the
mounting of `initrd`'s became dependent on having the option
`CONFIG_LIBVFSCORE_AUTOMOUNT_ROOTFS` enabled. Thus, if someone
wanted to mount an `initrd` through `fstab` only and with that
configuration option disabled, their build would fail.

Solve this dependency misconfiguration by making
`vfscore_mount_initrd_volume` only depend on  the
`CONFIG_LIBUKCPIO && CONFIG_LIBRAMFS` options instead.

Signed-off-by: Sergiu Moga <sergiu@unikraft.io>
18 months agoPR #1145
Sergiu Moga [Mon, 23 Oct 2023 13:03:57 +0000 (16:03 +0300)]
PR #1145

18 months agoplat/kvm/x86: ExitBootService after GetMemoryMap and retry if fail
Kha Dinh [Wed, 18 Oct 2023 07:32:42 +0000 (07:32 +0000)]
plat/kvm/x86: ExitBootService after GetMemoryMap and retry if fail

We exit Boot Service after obtaining MemoryMap, since it is no
longer needed. The function `uk_efi_exit_bs` is not reused and
is rather simple so it is merged with `uk_efi_get_mmap`.

Signed-off-by: Kha Dinh <khadinh@g.skku.edu>
18 months agoplat/kvm/x86: Make uk_efi_setup_bootinfo called last in EFI boot
Kha Dinh [Wed, 18 Oct 2023 07:30:39 +0000 (07:30 +0000)]
plat/kvm/x86: Make uk_efi_setup_bootinfo called last in EFI boot

The next commit makes `uk_efi_setup_boot_info` also invoke
ExitBootService, so it should be the last EFI setup step.

Signed-off-by: Kha Dinh <khadinh@g.skku.edu>
18 months agoplat/kvm/x86: Add formatted printing utility using during EFI boot
Kha Dinh [Wed, 18 Oct 2023 07:29:21 +0000 (07:29 +0000)]
plat/kvm/x86: Add formatted printing utility using during EFI boot

The current crash printing is somewhat limited as it cannot print
variables.
This commit refactor EFI debug printing. It adds a printf-like
utility for easier time debugging, rename some functions to be
more consistent with the rest of the code base.
Also, debug printing in EFI now depends on `libukdebug`, instead of
a dedicated option.

Signed-off-by: Kha Dinh <khadinh@g.skku.edu>
18 months agoRelease: v0.15.0 Pandora RELEASE-0.15.0
Alexander Jung [Mon, 23 Oct 2023 09:11:34 +0000 (09:11 +0000)]
Release: v0.15.0 Pandora

Signed-off-by: Razvan Deaconescu <razvand@unikraft.io>
Signed-off-by: Marc Rittinghaus <marc@unikraft.io>
Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Signed-off-by: Alexander Jung <alex@unikraft.io>
18 months agolib/nolibc/stdio: Add `libc` style minimal file operations functions 1043/head
Eduard Mihailescu [Fri, 11 Aug 2023 11:19:47 +0000 (14:19 +0300)]
lib/nolibc/stdio: Add `libc` style minimal file operations functions

If `vfscore` is enabled, then add a small set of minimally implemented
file handling functions like `fopen`, `fclose`, `fwrite`.
These are useful at link time for `gcc` objects such
as the ones from `gcov`.

Signed-off-by: Eduard-Florin Mihailescu <mihailescu.eduard@gmail.com>
18 months agobuild: Introduce `E=` parameter for excluding libraries
Simon Kuenzer [Mon, 18 Sep 2023 12:17:40 +0000 (14:17 +0200)]
build: Introduce `E=` parameter for excluding libraries

This commit introduces the build system parameter `E=` which expects a
colon separated list of paths that are matched against any library path
that the build system is including. This mechanism is intended to be used
for replacing internal libraries.
For example, to replace `uksched`, the replacing library (that has to match
configuration name(s) and APIs) needs to be included with `L=` while at the
same time, the Unikraft-internal library has to be excluded with `E=`:
```
 make L=/path/to/external-uksched E=/path/to/unikraft/lib/uksched
```

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1104

18 months agobuild: Ability to skip imports with `import_lib`
Simon Kuenzer [Mon, 18 Sep 2023 12:15:42 +0000 (14:15 +0200)]
build: Ability to skip imports with `import_lib`

This commits adds the ability to skip including `Makefile.uk` files by
`import_lib` if the target path matches with one of the paths that can
be found in the `$(IMPORT_EXCLUDEDIRS)` variable.

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1104

18 months agobuild: Remove obsolete relative paths handling for external libs
Simon Kuenzer [Thu, 12 Oct 2023 13:18:21 +0000 (15:18 +0200)]
build: Remove obsolete relative paths handling for external libs

This commit removes obsolete build system code that checked if external
libraries and external platforms were handed over from `$(UK_BASE)`
(Application directory or Unikraft root). Relative paths were never
supported and in the meantime, arguments are even checked to be absolute.

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1104

18 months agobuild: Release `$(E)` variable in build system
Simon Kuenzer [Mon, 18 Sep 2023 10:19:16 +0000 (12:19 +0200)]
build: Release `$(E)` variable in build system

In order to release the `$(E)` variable in the build system, any
occurrence of `$(E)` is replaced with a different variable name.

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1104

18 months agobuild: config-submenu: Remove trailing slashes from paths
Simon Kuenzer [Thu, 12 Oct 2023 20:07:24 +0000 (22:07 +0200)]
build: config-submenu: Remove trailing slashes from paths

This commit ensures that we remove a trailing slash of any path that is
handed over.

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1104

18 months agobuild: config-submenu: Introduce parameter to exclude libraries
Simon Kuenzer [Thu, 14 Sep 2023 19:08:02 +0000 (21:08 +0200)]
build: config-submenu: Introduce parameter to exclude libraries

This commit introduces the `-e` parameter which accepts a colon-separated
list of library paths. Such a path is compared to any library path that
would be included. If a match occurs, the affected library path is skipped.

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1104

18 months agobuild: config-submenu: Correctly quote file path for readlink
Simon Kuenzer [Thu, 14 Sep 2023 19:07:15 +0000 (21:07 +0200)]
build: config-submenu: Correctly quote file path for readlink

Whenever an output file is requested, `support/build/config-submenu`
writes the name of the target file to the console. This commit passes
this file name with quotes to `readlink` that converts it to a fully
qualified path.

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1104

18 months agobuild: Move arm64 clang target to architecture's Makefile.uk
Simon Kuenzer [Fri, 8 Sep 2023 23:43:48 +0000 (01:43 +0200)]
build: Move arm64 clang target to architecture's Makefile.uk

This commit moves setting of special ARCHFLAGS and ISR_ARCHFLAGS for arm64
with clang compilers from the main Makefile to the architecture's
`Makefile.uk` at `arch/arm/arm64/Makefile.uk`. The original feature was
introduced with:
Commit 55255f470592d ("Makfile: Add target flags for `clang` with `AArch64`")

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1104

18 months agobuild: Rename `_import_linker` to `import_linker`
Simon Kuenzer [Fri, 8 Sep 2023 23:32:07 +0000 (01:32 +0200)]
build: Rename `_import_linker` to `import_linker`

This commit renames the Makefile function `_import_linker` to `import_linker`.
The original intent was for this function to be purely internal and only
used in the core `Makefile`. It turns out that it might be used in other
places in the future, like potentilly external architectures, so this
commit removes the inappropriate `_` prefix.

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1104

18 months agobuild: Rename `_import_lib` to `import_lib`
Simon Kuenzer [Fri, 8 Sep 2023 23:31:19 +0000 (01:31 +0200)]
build: Rename `_import_lib` to `import_lib`

This commit renames the Makefile function `_import_lib` to `import_lib`.
The original intent was for this function to be purely internal and only
used in the core `Makefile`. It turns out that it needs to be used in many
other places, like `drivers/`, so this commit removes the inappropriate
`_` prefix.

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1104

18 months agobuild: Forcefully re-create link to main Makefile
Simon Kuenzer [Thu, 19 Oct 2023 15:17:54 +0000 (17:17 +0200)]
build: Forcefully re-create link to main Makefile

This commit makes sure that the symbolic link within the build directory
always points to the unikraft Makefile version that is used for a
build. This avoids issues when a project is build with multiple Unikraft
versions but using the same build path. The reason is that the build system
is invoking a sub-make call within the build directory using this symbolic
link.

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Cezar Craciunoiu <cezar.craciunoiu@unikraft.io>
Reviewed-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Maria Sfiraiala <maria.sfiraiala@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1104

18 months agoplat/kvm: Enable linux-compatible virtio-mmio cmdline on Firecracker
Michalis Pappas [Wed, 27 Sep 2023 15:07:58 +0000 (17:07 +0200)]
plat/kvm: Enable linux-compatible virtio-mmio cmdline on Firecracker

Firecracker injects virtio-mmio device descriptors to the command line
using the Linux format. Enable VIRTIO_MMIO_LINUX_COMPAT_CMDLINE for
Firecracker.

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Rares Miculescu <miculescur@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1116

18 months agodrivers/virtio/mmio: Support passing devices via the cmdline
Michalis Pappas [Thu, 31 Aug 2023 14:04:20 +0000 (16:04 +0200)]
drivers/virtio/mmio: Support passing devices via the cmdline

This commit adds support for passing virtio-mmio devices via the
command-line.

The probing function is invoked by ukbus at a priority lower than
the the platform bus, to ensure that the virtio devices have been
probed, to safely register with the parent device.

Add a config parameter to control compatibility with Linux.
Specifically, when VIRTIO_MMIO_LINUX_COMPAT_CMDLINE is selected
the MMIO driver is configured to accept devices in the Linux format,
ie:

  virtio_mmio.device = <size>@<base>:<irq>[:<id>]

If this option is not enabled, use the default libukparam
format for this library, ie:

  libvirtio_mmio.device = <size>@<base>:<irq>[:<id>]

This is useful for VMMs like Firecracker, that automatically inject
device descriptors the command line.

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Rares Miculescu <miculescur@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1116

18 months agodrivers/ukbus/platform: Add uk_bus_pf_devmap
Michalis Pappas [Wed, 20 Sep 2023 11:18:33 +0000 (13:18 +0200)]
drivers/ukbus/platform: Add uk_bus_pf_devmap

Add `uk_bus_pf_devmap()` for mapping device regions. Because of the
current boot flow that initializes the vmmap API after the probing
the interrupt controller - which is required for bringing up secondary
cores - it is not possible to use uk_vma_map_dma() here, so we need to
resort to the low level paging API and map devices 1:1.

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Rares Miculescu <miculescur@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1116

18 months agodrivers/virtio/mmio: Populate pfdev size
Michalis Pappas [Wed, 20 Sep 2023 06:59:44 +0000 (08:59 +0200)]
drivers/virtio/mmio: Populate pfdev size

Update virtio_mmio_probe_fdt() to populate the device size.

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Rares Miculescu <miculescur@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1116

18 months agodrivers/ukbus/platform: Add size field to struct pf_device
Michalis Pappas [Wed, 6 Sep 2023 15:47:34 +0000 (17:47 +0200)]
drivers/ukbus/platform: Add size field to struct pf_device

Since it is possible that devices use more than a single page
of MMIO, add a size field to `struct pf_device` to track the
device region size.

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Rares Miculescu <miculescur@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1116

18 months agodrivers/ukbus/pci: Make PCI ECAM conditional to fdt
Michalis Pappas [Mon, 18 Sep 2023 13:23:10 +0000 (15:23 +0200)]
drivers/ukbus/pci: Make PCI ECAM conditional to fdt

The PCI ECAM implementation is tightly coupled to fdt. Given that
the platform bus can now be used on x86_64, make PCI ECAM conditional
to the fdt libraries.

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Rares Miculescu <miculescur@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1116

18 months agodrivers/virtio/mmio: Make fdt discovery optional
Michalis Pappas [Fri, 15 Sep 2023 18:29:45 +0000 (20:29 +0200)]
drivers/virtio/mmio: Make fdt discovery optional

Make ftd-based discovery optional, to allow using virtio-mmio
on x86_64.

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Rares Miculescu <miculescur@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1116

18 months agodrivers/ukbus/platform: Make fdt discovery optional
Michalis Pappas [Fri, 15 Sep 2023 07:58:37 +0000 (09:58 +0200)]
drivers/ukbus/platform: Make fdt discovery optional

Make fdt-based discovery optional to allow the platform bus to be
selected for virtio-mmio on x86_64.

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Rares Miculescu <miculescur@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1116

18 months agolib/ukdebug: Replace fallthrough comment markers with macro
Michalis Pappas [Tue, 3 Oct 2023 16:08:51 +0000 (18:08 +0200)]
lib/ukdebug: Replace fallthrough comment markers with macro

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Rares Miculescu <miculescur@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1116

18 months agolib/nolibc: Replace fallthrough comment marker with macro
Michalis Pappas [Tue, 3 Oct 2023 16:06:16 +0000 (18:06 +0200)]
lib/nolibc: Replace fallthrough comment marker with macro

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Rares Miculescu <miculescur@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1116

18 months agoplat/kvm/x86: Replace fallthrough comment markers with macro
Michalis Pappas [Tue, 3 Oct 2023 16:05:07 +0000 (18:05 +0200)]
plat/kvm/x86: Replace fallthrough comment markers with macro

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Rares Miculescu <miculescur@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1116

18 months agoinclude/essentials: Provide __fallthrough macro
Michalis Pappas [Tue, 3 Oct 2023 15:49:35 +0000 (17:49 +0200)]
include/essentials: Provide __fallthrough macro

Add a macro for `__attribute__(fallthrough)` to hint the compiler
about fallthrough cases in switch statements. The fallthough
attributed is supported by the minimum compiler version of both GCC
and clang.

Signed-off-by: Michalis Pappas <michalis@unikraft.io>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Rares Miculescu <miculescur@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1116

18 months agoplat/kvm: Adapt EFI boot to new APIC driver
Kha Dinh [Sun, 15 Oct 2023 08:59:34 +0000 (08:59 +0000)]
plat/kvm: Adapt EFI boot to new APIC driver

Fixed the header include and redelared missing macros in `efi_post.c`.
This is a temporary fix until our APIC driver can handle LAPIC.

Signed-off-by: Kha Dinh <khadinh@g.skku.edu>
Reviewed-by: Marco Schlumpp <marco@unikraft.io>
Reviewed-by: Sergiu Moga <sergiu@unikraft.io>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1138

18 months agoplat/kvm/x86: Pre-initialize VGA framebuffer `terminal_buffer`
Sergiu Moga [Sat, 14 Oct 2023 09:17:55 +0000 (12:17 +0300)]
plat/kvm/x86: Pre-initialize VGA framebuffer `terminal_buffer`

After commit f57ca0bbc402 ("plat/kvm/x86: Make zero page inaccessible"),
early accesses to uninitialized VGA framebuffer would issue an unhandled
page fault and thus crashing the application. Solve this by
preinitializing the `terminal_buffer` variable.

Signed-off-by: Sergiu Moga <sergiu@unikraft.io>
Reviewed-by: Stefan Jumarea <stefanjumarea02@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1136

18 months agoplat/kvm/x86: Use `ur_pte` for the first page table
Sergiu Moga [Sat, 14 Oct 2023 09:15:02 +0000 (12:15 +0300)]
plat/kvm/x86: Use `ur_pte` for the first page table

After commit f57ca0bbc402 ("plat/kvm/x86: Make zero page inaccessible"),
UEFI builds would fail to run due to the first page table becoming
unrelocatable.

Therefore, fix this by using the `ur_pte` variant of the `pte` macro.

Signed-off-by: Sergiu Moga <sergiu@unikraft.io>
Reviewed-by: Stefan Jumarea <stefanjumarea02@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1135

18 months agolib/uklibid: Clang-compatible compile option flags
Simon Kuenzer [Thu, 12 Oct 2023 08:50:14 +0000 (10:50 +0200)]
lib/uklibid: Clang-compatible compile option flags

Clang's preprocessor seems to behave differently when computing an integer
based on undefined macros. For example, the following expression:
```
  (!(!__LIBUKLIBID_COMPILEOPT_PIE__) * (0x01 << 0))
```
resolves to 0x0 on GCC's GAS if __LIBUKLIBID_COMPILEOPT_PIE__ is not
defined. Clang is throwing an compile error because of the missing
definition. This commit adopts `libinfo.S` to define an intermediate
value macro that is set to `0` when the requested feature is not enabled.

Signed-off-by: Simon Kuenzer <simon@unikraft.io>
Reviewed-by: Stefan Jumarea <stefanjumarea02@gmail.com>
Reviewed-by: Robert Kuban <robert.kuban@opensynergy.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1131

18 months agolib/nolibc: Remove LIBC_SYSCALLS guard in prctl.h
Tiago Andre Goncalves Oliveira [Sat, 16 Sep 2023 17:18:33 +0000 (18:18 +0100)]
lib/nolibc: Remove LIBC_SYSCALLS guard in prctl.h

sys/prctl.h in nolibc is using UK_LIBC_SYSCALLS as guard.
This is not required, since the guard only makes sense outside nolibc.
Remove UK_LIBC_SYSCALLS guard.

Signed-off-by: Tiago Andre Goncalves Oliveira <t.g.oliveira@ua.pt>
Reviewed-by: Stefan Jumarea <stefanjumarea02@gmail.com>
Approved-by: Razvan Deaconescu <razvand@unikraft.io>
GitHub-Closes: #1102