From 0859eded3f046447ae75914f8738d281c87a5638 Mon Sep 17 00:00:00 2001 From: Qiu Jian Date: Sat, 8 Jan 2022 02:28:43 +0800 Subject: [PATCH] fix: usb id in spice command args conflict with usb-xhci --- pkg/hostman/guestman/qemu-arm.go | 42 +++++++++++++++----------- pkg/hostman/guestman/qemu-kvmhelper.go | 19 +----------- 2 files changed, 25 insertions(+), 36 deletions(-) diff --git a/pkg/hostman/guestman/qemu-arm.go b/pkg/hostman/guestman/qemu-arm.go index 1f174e8e25..9e08594ab1 100644 --- a/pkg/hostman/guestman/qemu-arm.go +++ b/pkg/hostman/guestman/qemu-arm.go @@ -193,24 +193,7 @@ function nic_mtu() { cmd += " -device virtio-gpu-pci,id=video0,max_outputs=1" if s.IsVdiSpice() { - cmd += " -device qxl-vga,id=video0,ram_size=141557760,vram_size=141557760" - cmd += " -device intel-hda,id=sound0" - cmd += " -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0" - cmd += fmt.Sprintf(" -spice port=%d,password=87654312,seamless-migration=on", 5900+vncPort) - // # ,streaming-video=all,playback-compression=on,jpeg-wan-compression=always,zlib-glz-wan-compression=always,image-compression=glz" % (5900+vnc_port) - cmd += fmt.Sprintf(" -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=%s", s.GetPciBus()) - cmd += " -chardev spicevmc,name=vdagent,id=vdagent" - cmd += " -device virtserialport,nr=1,bus=virtio-serial0.0,chardev=vdagent,name=com.redhat.spice.0" - - // # usb redirect - cmd += " -device ich9-usb-ehci1,id=usb" - cmd += " -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,multifunction=on" - cmd += " -device ich9-usb-uhci2,masterbus=usb.0,firstport=2" - cmd += " -device ich9-usb-uhci3,masterbus=usb.0,firstport=4" - cmd += " -chardev spicevmc,name=usbredir,id=usbredirchardev1" - cmd += " -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1" - cmd += " -chardev spicevmc,name=usbredir,id=usbredirchardev2" - cmd += " -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2" + cmd += s.generateSpiceArgs(vncPort) } else { cmd += fmt.Sprintf(" -vnc :%d", vncPort) if options.HostOptions.SetVncPassword { @@ -289,3 +272,26 @@ function nic_mtu() { return cmd, nil } + +func (s *SKVMGuestInstance) generateSpiceArgs(vncPort int64) string { + cmd := "" + cmd += " -device qxl-vga,id=video0,ram_size=141557760,vram_size=141557760" + cmd += " -device intel-hda,id=sound0" + cmd += " -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0" + cmd += fmt.Sprintf(" -spice port=%d,password=87654312,seamless-migration=on", 5900+vncPort) + // # ,streaming-video=all,playback-compression=on,jpeg-wan-compression=always,zlib-glz-wan-compression=always,image-compression=glz" % (5900+vnc_port) + cmd += fmt.Sprintf(" -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=%s", s.GetPciBus()) + cmd += " -chardev spicevmc,name=vdagent,id=vdagent" + cmd += " -device virtserialport,nr=1,bus=virtio-serial0.0,chardev=vdagent,name=com.redhat.spice.0" + + // # usb redirect + cmd += " -device ich9-usb-ehci1,id=usbspice" + cmd += " -device ich9-usb-uhci1,masterbus=usbspice.0,firstport=0,multifunction=on" + cmd += " -device ich9-usb-uhci2,masterbus=usbspice.0,firstport=2" + cmd += " -device ich9-usb-uhci3,masterbus=usbspice.0,firstport=4" + cmd += " -chardev spicevmc,name=usbredir,id=usbredirchardev1" + cmd += " -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1" + cmd += " -chardev spicevmc,name=usbredir,id=usbredirchardev2" + cmd += " -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2" + return cmd +} diff --git a/pkg/hostman/guestman/qemu-kvmhelper.go b/pkg/hostman/guestman/qemu-kvmhelper.go index 88bc146434..7dc79fdd2a 100644 --- a/pkg/hostman/guestman/qemu-kvmhelper.go +++ b/pkg/hostman/guestman/qemu-kvmhelper.go @@ -614,24 +614,7 @@ function nic_mtu() { } if s.IsVdiSpice() { - cmd += " -device qxl-vga,id=video0,ram_size=141557760,vram_size=141557760" - cmd += " -device intel-hda,id=sound0" - cmd += " -device hda-duplex,id=sound0-codec0,bus=sound0.0,cad=0" - cmd += fmt.Sprintf(" -spice port=%d,password=87654312,seamless-migration=on", 5900+vncPort) - // # ,streaming-video=all,playback-compression=on,jpeg-wan-compression=always,zlib-glz-wan-compression=always,image-compression=glz" % (5900+vnc_port) - cmd += fmt.Sprintf(" -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=%s", s.GetPciBus()) - cmd += " -chardev spicevmc,name=vdagent,id=vdagent" - cmd += " -device virtserialport,nr=1,bus=virtio-serial0.0,chardev=vdagent,name=com.redhat.spice.0" - - // # usb redirect - cmd += " -device ich9-usb-ehci1,id=usb" - cmd += " -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,multifunction=on" - cmd += " -device ich9-usb-uhci2,masterbus=usb.0,firstport=2" - cmd += " -device ich9-usb-uhci3,masterbus=usb.0,firstport=4" - cmd += " -chardev spicevmc,name=usbredir,id=usbredirchardev1" - cmd += " -device usb-redir,chardev=usbredirchardev1,id=usbredirdev1" - cmd += " -chardev spicevmc,name=usbredir,id=usbredirchardev2" - cmd += " -device usb-redir,chardev=usbredirchardev2,id=usbredirdev2" + cmd += s.generateSpiceArgs(vncPort) } else { if isolatedDevsParams != nil && len(isolatedDevsParams.Vga) > 0 { cmd += isolatedDevsParams.Vga