From 723c89af670c3574374f4c1800ba072267a3d1eb Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Wed, 4 Aug 2021 01:39:14 +0200 Subject: [PATCH] Meta: Automatically enable WHPX when possible --- Documentation/BuildInstructionsWindows.md | 8 ++----- Meta/run.sh | 27 ++++++++++++++--------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/Documentation/BuildInstructionsWindows.md b/Documentation/BuildInstructionsWindows.md index 45e74fad32cbf4..e8ca0b329bb6d7 100644 --- a/Documentation/BuildInstructionsWindows.md +++ b/Documentation/BuildInstructionsWindows.md @@ -48,10 +48,6 @@ following command in an elevated PowerShell session: \ ![WHPX Windows Feature](WHPX_Feature.png) -Set the `SERENITY_VIRT_TECH_ARG` environment variable in your WSL2 shell: \ -`export SERENITY_VIRT_TECH_ARG="-accel whpx,kernel-irqchip=off"` +You may have to reboot after enabling the WHPX feature. -You might want to add those environment variables to your shell's configuration file, so that you don't have to set them -manually each time you start a new shell. - -Start the VM with `Meta/serenity.sh run` as usual. +Afterwards you can start the VM with `Meta/serenity.sh run` as usual. diff --git a/Meta/run.sh b/Meta/run.sh index a2ba475a35fbd3..38a7f5a08d0329 100755 --- a/Meta/run.sh +++ b/Meta/run.sh @@ -60,16 +60,6 @@ fi [ -z "$SERENITY_RAM_SIZE" ] && SERENITY_RAM_SIZE=512M -if command -v wslpath >/dev/null; then - case "$SERENITY_QEMU_BIN" in - /mnt/?/*) - [ -z "$SERENITY_QEMU_CPU" ] && SERENITY_QEMU_CPU="max,vmx=off" - SERENITY_KERNEL_CMDLINE="$SERENITY_KERNEL_CMDLINE disable_virtio" - esac -fi - -[ -z "$SERENITY_QEMU_CPU" ] && SERENITY_QEMU_CPU="max" - [ -z "$SERENITY_DISK_IMAGE" ] && { if [ "$SERENITY_RUN" = qgrub ]; then SERENITY_DISK_IMAGE="grub_disk_image" @@ -100,6 +90,23 @@ if [ "$installed_major_version" -lt "$SERENITY_QEMU_MIN_REQ_VERSION" ]; then die fi +if command -v wslpath >/dev/null; then + case "$SERENITY_QEMU_BIN" in + /mnt/?/*) + if [ -z "$SERENITY_VIRT_TECH_ARG" ]; then + if [ "$installed_major_version" -gt 5 ]; then + SERENITY_VIRT_TECH_ARG="-accel whpx,kernel-irqchip=off -accel tcg" + else + SERENITY_VIRT_TECH_ARG="-accel whpx -accel tcg" + fi + fi + [ -z "$SERENITY_QEMU_CPU" ] && SERENITY_QEMU_CPU="max,vmx=off" + SERENITY_KERNEL_CMDLINE="$SERENITY_KERNEL_CMDLINE disable_virtio" + esac +fi + +[ -z "$SERENITY_QEMU_CPU" ] && SERENITY_QEMU_CPU="max" + if [ -z "$SERENITY_SPICE" ] && "${SERENITY_QEMU_BIN}" -chardev help | grep -iq qemu-vdagent; then SERENITY_SPICE_SERVER_CHARDEV="-chardev qemu-vdagent,clipboard=on,mouse=off,id=vdagent,name=vdagent" elif "${SERENITY_QEMU_BIN}" -chardev help | grep -iq spicevmc; then