summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2025-03-11 14:24:19 +0100
committerSimon Rettberg2025-03-11 14:24:19 +0100
commit2667c98c9d9787ef68318d3faf252b63cf1c1783 (patch)
tree2da49fe4c5b0d9eaf086b33342e96d5f6572a3db
parent[run-virt] Trim leading/trailing spaces from fields in shares.dat (diff)
downloadmltk-2667c98c9d9787ef68318d3faf252b63cf1c1783.tar.gz
mltk-2667c98c9d9787ef68318d3faf252b63cf1c1783.tar.xz
mltk-2667c98c9d9787ef68318d3faf252b63cf1c1783.zip
[qemu] Make sure qxl's vgamem is at least 48MB, ram at least 64MB
-rw-r--r--core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuGraphics.java31
1 files changed, 29 insertions, 2 deletions
diff --git a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuGraphics.java b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuGraphics.java
index bb94a8d8..ca947e1f 100644
--- a/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuGraphics.java
+++ b/core/modules/qemu/runvirt-plugin-qemu/src/main/java/org/openslx/runvirt/plugin/qemu/configuration/TransformationSpecificQemuGraphics.java
@@ -1,11 +1,15 @@
package org.openslx.runvirt.plugin.qemu.configuration;
+import java.util.List;
+
import org.openslx.libvirt.domain.Domain;
import org.openslx.libvirt.domain.device.Graphics.ListenType;
import org.openslx.libvirt.domain.device.GraphicsSpice;
import org.openslx.libvirt.domain.device.GraphicsSpice.ImageCompression;
import org.openslx.libvirt.domain.device.GraphicsSpice.StreamingMode;
import org.openslx.libvirt.domain.device.GraphicsVnc;
+import org.openslx.libvirt.domain.device.Video;
+import org.openslx.libvirt.domain.device.Video.Model;
import org.openslx.runvirt.plugin.qemu.cmdln.CommandLineArgs;
import org.openslx.runvirt.plugin.qemu.virtualization.LibvirtHypervisorQemu;
import org.openslx.virtualization.configuration.transformation.TransformationException;
@@ -20,6 +24,10 @@ import org.openslx.virtualization.configuration.transformation.TransformationSpe
public class TransformationSpecificQemuGraphics
extends TransformationSpecific<Domain, CommandLineArgs, LibvirtHypervisorQemu>
{
+
+ private static final int MIN_VGA_MEM = 48 * 1024;
+ private static final int MIN_RAM = 16 * 1024;
+
/**
* Name of the configuration transformation.
*/
@@ -57,7 +65,7 @@ public class TransformationSpecificQemuGraphics
*
* @return created SPICE graphics device instance.
*/
- public GraphicsSpice addLocalSpiceGraphics( Domain config, boolean openGlEnabled )
+ private GraphicsSpice addLocalSpiceGraphics( Domain config, boolean openGlEnabled )
{
final GraphicsSpice newGraphicsSpiceDevice = config.addGraphicsSpiceDevice();
@@ -68,13 +76,30 @@ public class TransformationSpecificQemuGraphics
newGraphicsSpiceDevice.setImageCompression( ImageCompression.OFF );
newGraphicsSpiceDevice.setPlaybackCompression( false );
newGraphicsSpiceDevice.setStreamingMode( StreamingMode.OFF );
-
+
// enable OpenGL acceleration if necessary
newGraphicsSpiceDevice.setOpenGl( openGlEnabled );
return newGraphicsSpiceDevice;
}
+ private void adjustVideoMemory( Domain config )
+ {
+ // adjust vgamem, so higher resolutions work properly
+ List<Video> list = config.getVideoDevices();
+ for ( Video dev : list ) {
+ if ( dev.getModel() == Model.QXL || dev.getVgaMem() > 0 ) {
+ // See https://lists.gnu.org/archive/html/qemu-devel/2012-06/msg01898.html
+ if ( dev.getVgaMem() < MIN_VGA_MEM ) {
+ dev.setVgaMem( MIN_VGA_MEM );
+ }
+ if ( dev.getRam() < dev.getVgaMem() + MIN_RAM ) {
+ dev.setRam( dev.getVgaMem() + MIN_RAM );
+ }
+ }
+ }
+ }
+
@Override
public void transform( Domain config, CommandLineArgs args ) throws TransformationException
{
@@ -95,6 +120,8 @@ public class TransformationSpecificQemuGraphics
// remove VNC graphics device
graphicsSpiceDevice.remove();
}
+ // in case vmem is low, adjust to support large resolutions (4k+)
+ this.adjustVideoMemory( config );
// finally, add one SPICE graphics device with local Unix domain socket access
this.addLocalSpiceGraphics( config, isOGL );