mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-21 23:20:20 +00:00
Ports: Update rvvm to 0.6
- New upstream stable version is available - Networking is now fully stable and enabled by default - SDL2 backend is now available alongside SDL1, so switch to it - Fixed a name collision of PAGE_SIZE with Serenity headers - Disable threaded IO on Serenity for now - Many other changes and fixes - See https://github.com/LekKit/RVVM/releases/tag/v0.6 for more
This commit is contained in:
parent
f932d5d825
commit
bb5ad12e43
Notes:
sideshowbarker
2024-07-17 03:19:14 +09:00
Author: https://github.com/LekKit Commit: https://github.com/SerenityOS/serenity/commit/bb5ad12e43 Pull-request: https://github.com/SerenityOS/serenity/pull/23673 Reviewed-by: https://github.com/timschumi ✅
4 changed files with 86 additions and 7 deletions
|
@ -280,7 +280,7 @@ This list is also available at [ports.serenityos.net](https://ports.serenityos.n
|
|||
| [`rsync`](rsync/) | rsync | 3.2.7 | https://rsync.samba.org/ |
|
||||
| [`rubberband`](rubberband/) | Rubberband | 3.3.0 | https://breakfastquay.com/rubberband/ |
|
||||
| [`ruby`](ruby/) | Ruby | 3.2.2 | https://www.ruby-lang.org/ |
|
||||
| [`rvvm`](rvvm/) | RVVM - The RISC-V Virtual Machine | 0.5 | https://github.com/LekKit/RVVM |
|
||||
| [`rvvm`](rvvm/) | RVVM - The RISC-V Virtual Machine | 0.6 | https://github.com/LekKit/RVVM |
|
||||
| [`sam`](sam/) | Software Automatic Mouth (SAM) | c86ea39 | https://github.com/vidarh/SAM |
|
||||
| [`scummvm`](scummvm/) | ScummVM | 2.8.0 | https://www.scummvm.org/ |
|
||||
| [`sdl12-compat`](sdl12-compat/) | SDL2 compatibility layer for SDL 1.2 games | 1.2.64 | https://github.com/libsdl-org/sdl12-compat/ |
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
#!/usr/bin/env -S bash ../.port_include.sh
|
||||
|
||||
port='rvvm'
|
||||
version='0.5'
|
||||
archive_hash='3a1dbb91ad04f068078bc6c6c27cc5792eebc111907cb5a14bde158fe6e757c9'
|
||||
version='0.6'
|
||||
archive_hash='97e98c95d8785438758b81fb5c695b8eafb564502c6af7f52555b056e3bb7d7a'
|
||||
files=(
|
||||
"https://github.com/LekKit/RVVM/archive/v${version}.tar.gz#${archive_hash}"
|
||||
)
|
||||
workdir="RVVM-${version}"
|
||||
depends=('sdl12-compat')
|
||||
depends=('SDL2')
|
||||
|
||||
build_opts=(
|
||||
'GIT_COMMIT=76796ba'
|
||||
'GIT_COMMIT=f937fd8'
|
||||
'OS=SerenityOS'
|
||||
'USE_NET=1'
|
||||
'USE_SDL=1'
|
||||
'USE_SDL=2'
|
||||
)
|
||||
makeopts+=("${build_opts[@]}" 'all' 'lib')
|
||||
installopts+=("${build_opts[@]}")
|
||||
|
|
|
@ -0,0 +1,60 @@
|
|||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: LekKit <50500857+LekKit@users.noreply.github.com>
|
||||
Date: Sat, 23 Mar 2024 13:31:42 +0200
|
||||
Subject: [PATCH] Disable threaded IO on Serenity
|
||||
|
||||
Due to sloppy scheduler/threading behavior on Serenity,
|
||||
threaded IO is disabled in this port for now.
|
||||
Otherwise U-Boot randomly fails to read data from NVMe,
|
||||
or fails to initialize NVMe altogether, along with other IO
|
||||
issues in guests - all due to threaded tasks being randomly
|
||||
delayed for very long.
|
||||
|
||||
I am not an expert on how scheduler works in Serenity,
|
||||
so I am unable to fix it yet.
|
||||
This problem was also visible in previous v0.5 version of this port,
|
||||
but back then I thought it's some kind of a temporary problem.
|
||||
Couldn't reproduce this on any other host OS.
|
||||
---
|
||||
src/threading.c | 12 ++++++++++++
|
||||
1 file changed, 12 insertions(+)
|
||||
|
||||
diff --git a/src/threading.c b/src/threading.c
|
||||
index 98883ede4fe63faf6b328e427fc1be9e5114c445..705749ca60092ddc42f07ff19d8a66bce797dc80 100644
|
||||
--- a/src/threading.c
|
||||
+++ b/src/threading.c
|
||||
@@ -318,6 +318,12 @@ void condvar_free(cond_var_t* cond)
|
||||
|
||||
// Threadpool task offloading
|
||||
|
||||
+// Serenity has serious scheduler issues that cause threadpool to
|
||||
+// perform very poorly when vCPU is not sleeping.
|
||||
+// Basically a thread that uses 100% of CPU on Serenity somehow
|
||||
+// monopolizes host CPU so threadpool/eventloop tasks are timing out.
|
||||
+
|
||||
+#ifndef __serenity__
|
||||
#define WORKER_THREADS 4
|
||||
#define WORKQUEUE_SIZE 2048
|
||||
#define WORKQUEUE_MASK (WORKQUEUE_SIZE - 1)
|
||||
@@ -440,8 +446,11 @@ static void* threadpool_worker(void* ptr)
|
||||
return ptr;
|
||||
}
|
||||
|
||||
+#endif
|
||||
+
|
||||
static bool thread_queue_task(thread_func_t func, void** arg, unsigned arg_count, bool va)
|
||||
{
|
||||
+#ifndef __serenity__
|
||||
DO_ONCE ({
|
||||
atomic_store_uint32_ex(&pool_run, 1, ATOMIC_RELAXED);
|
||||
workqueue_init(&pool_wq);
|
||||
@@ -461,6 +470,9 @@ static bool thread_queue_task(thread_func_t func, void** arg, unsigned arg_count
|
||||
// Still not queued!
|
||||
// Assuming entire threadpool is busy, just do a blocking task
|
||||
DO_ONCE(rvvm_warn("Blocking on workqueue task %p", func));
|
||||
+#else
|
||||
+ UNUSED(func); UNUSED(arg); UNUSED(arg_count); UNUSED(va);
|
||||
+#endif
|
||||
return false;
|
||||
}
|
||||
|
19
Ports/rvvm/patches/ReadMe.md
Normal file
19
Ports/rvvm/patches/ReadMe.md
Normal file
|
@ -0,0 +1,19 @@
|
|||
# Patches for rvvm on SerenityOS
|
||||
|
||||
## `0001-Disable-threaded-IO-on-Serenity.patch`
|
||||
|
||||
Disable threaded IO on Serenity
|
||||
|
||||
Due to sloppy scheduler/threading behavior on Serenity,
|
||||
threaded IO is disabled in this port for now.
|
||||
Otherwise U-Boot randomly fails to read data from NVMe,
|
||||
or fails to initialize NVMe altogether, along with other IO
|
||||
issues in guests - all due to threaded tasks being randomly
|
||||
delayed for very long.
|
||||
|
||||
I am not an expert on how scheduler works in Serenity,
|
||||
so I am unable to fix it yet.
|
||||
This problem was also visible in previous v0.5 version of this port,
|
||||
but back then I thought it's some kind of a temporary problem.
|
||||
Couldn't reproduce this on any other host OS.
|
||||
|
Loading…
Reference in a new issue