[lxc-devel] [lxd/master] VM device improvements

stgraber on Github lxc-bot at linuxcontainers.org
Thu Jun 11 20:24:58 UTC 2020


A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 301 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20200611/aef53e13/attachment.bin>
-------------- next part --------------
From f8de3180632a1e8de675b1ba943de017881882b8 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 11 Jun 2020 15:51:51 -0400
Subject: [PATCH 1/4] lxd/vm: Separate template keys in global/local
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/instance/drivers/driver_qemu.go | 33 +++++++++++++++++------------
 1 file changed, 19 insertions(+), 14 deletions(-)

diff --git a/lxd/instance/drivers/driver_qemu.go b/lxd/instance/drivers/driver_qemu.go
index 78ecde039b..de69b3f3db 100644
--- a/lxd/instance/drivers/driver_qemu.go
+++ b/lxd/instance/drivers/driver_qemu.go
@@ -1726,8 +1726,9 @@ func (vm *qemu) generateQemuConfigFile(bus string, devConfs []*deviceConfig.RunC
 		"bus":           bus,
 		"devBus":        devBus,
 		"devAddr":       devAddr,
-		"vsockID":       vm.vsockID(),
 		"multifunction": multi,
+
+		"vsockID": vm.vsockID(),
 	})
 	if err != nil {
 		return "", err
@@ -1735,11 +1736,12 @@ func (vm *qemu) generateQemuConfigFile(bus string, devConfs []*deviceConfig.RunC
 
 	devBus, devAddr, multi = allocateBusAddr("generic")
 	err = qemuSerial.Execute(sb, map[string]interface{}{
-		"bus":              bus,
-		"devBus":           devBus,
-		"devAddr":          devAddr,
+		"bus":           bus,
+		"devBus":        devBus,
+		"devAddr":       devAddr,
+		"multifunction": multi,
+
 		"ringbufSizeBytes": qmp.RingbufSize,
-		"multifunction":    multi,
 	})
 	if err != nil {
 		return "", err
@@ -1761,8 +1763,9 @@ func (vm *qemu) generateQemuConfigFile(bus string, devConfs []*deviceConfig.RunC
 		"bus":           bus,
 		"devBus":        devBus,
 		"devAddr":       devAddr,
-		"path":          filepath.Join(vm.Path(), "config"),
 		"multifunction": multi,
+
+		"path": filepath.Join(vm.Path(), "config"),
 	})
 	if err != nil {
 		return "", err
@@ -1989,11 +1992,12 @@ func (vm *qemu) addDriveDirConfig(sb *strings.Builder, bus string, allocateBusAd
 			"bus":           bus,
 			"devBus":        devBus,
 			"devAddr":       devAddr,
-			"devName":       driveConf.DevName,
-			"mountTag":      mountTag,
-			"path":          driveConf.DevPath,
-			"readonly":      true,
 			"multifunction": multi,
+
+			"devName":  driveConf.DevName,
+			"mountTag": mountTag,
+			"path":     driveConf.DevPath,
+			"readonly": true,
 		})
 	}
 
@@ -2003,11 +2007,12 @@ func (vm *qemu) addDriveDirConfig(sb *strings.Builder, bus string, allocateBusAd
 		"bus":           bus,
 		"devBus":        devBus,
 		"devAddr":       devAddr,
-		"devName":       driveConf.DevName,
-		"mountTag":      mountTag,
-		"proxyFD":       proxyFD,
-		"readonly":      false,
 		"multifunction": multi,
+
+		"devName":  driveConf.DevName,
+		"mountTag": mountTag,
+		"proxyFD":  proxyFD,
+		"readonly": false,
 	})
 }
 

From 3d1dca4c57363666ba53ce758d550390f125b528 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 11 Jun 2020 15:46:45 -0400
Subject: [PATCH 2/4] lxd/vm: Use virtio-gpu-pci on non-x86
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/instance/drivers/driver_qemu.go           | 2 ++
 lxd/instance/drivers/driver_qemu_templates.go | 4 ++++
 2 files changed, 6 insertions(+)

diff --git a/lxd/instance/drivers/driver_qemu.go b/lxd/instance/drivers/driver_qemu.go
index de69b3f3db..a83560aabd 100644
--- a/lxd/instance/drivers/driver_qemu.go
+++ b/lxd/instance/drivers/driver_qemu.go
@@ -1777,6 +1777,8 @@ func (vm *qemu) generateQemuConfigFile(bus string, devConfs []*deviceConfig.RunC
 		"devBus":        devBus,
 		"devAddr":       devAddr,
 		"multifunction": multi,
+
+		"architecture": vm.architectureName,
 	})
 	if err != nil {
 		return "", err
diff --git a/lxd/instance/drivers/driver_qemu_templates.go b/lxd/instance/drivers/driver_qemu_templates.go
index ed2cd9397f..7aa900e8e4 100644
--- a/lxd/instance/drivers/driver_qemu_templates.go
+++ b/lxd/instance/drivers/driver_qemu_templates.go
@@ -169,7 +169,11 @@ var qemuVGA = template.Must(template.New("qemuVGA").Parse(`
 # VGA
 [device "qemu_vga"]
 {{- if eq .bus "pci" "pcie"}}
+{{if eq .architecture "x86_64" -}}
 driver = "virtio-vga"
+{{- else}}
+driver = "virtio-gpu-pci"
+{{- end}}
 bus = "{{.devBus}}"
 addr = "{{.devAddr}}"
 {{- end}}

From e209429bbf852678fb95fad4b02a022db54a6817 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 11 Jun 2020 16:06:09 -0400
Subject: [PATCH 3/4] lxd/vm: Rename qemuVGA to qemuGPU
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/instance/drivers/driver_qemu.go           | 2 +-
 lxd/instance/drivers/driver_qemu_templates.go | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/lxd/instance/drivers/driver_qemu.go b/lxd/instance/drivers/driver_qemu.go
index a83560aabd..b8d1dad622 100644
--- a/lxd/instance/drivers/driver_qemu.go
+++ b/lxd/instance/drivers/driver_qemu.go
@@ -1772,7 +1772,7 @@ func (vm *qemu) generateQemuConfigFile(bus string, devConfs []*deviceConfig.RunC
 	}
 
 	devBus, devAddr, multi = allocateBusAddr("")
-	err = qemuVGA.Execute(sb, map[string]interface{}{
+	err = qemuGPU.Execute(sb, map[string]interface{}{
 		"bus":           bus,
 		"devBus":        devBus,
 		"devAddr":       devAddr,
diff --git a/lxd/instance/drivers/driver_qemu_templates.go b/lxd/instance/drivers/driver_qemu_templates.go
index 7aa900e8e4..a9777d0c87 100644
--- a/lxd/instance/drivers/driver_qemu_templates.go
+++ b/lxd/instance/drivers/driver_qemu_templates.go
@@ -165,9 +165,9 @@ multifunction = "on"
 {{- end }}
 `))
 
-var qemuVGA = template.Must(template.New("qemuVGA").Parse(`
-# VGA
-[device "qemu_vga"]
+var qemuGPU = template.Must(template.New("qemuGPU").Parse(`
+# GPU
+[device "qemu_gpu"]
 {{- if eq .bus "pci" "pcie"}}
 {{if eq .architecture "x86_64" -}}
 driver = "virtio-vga"

From b9b023d4aef75a878d4935ca076ec256738b538a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Thu, 11 Jun 2020 16:24:29 -0400
Subject: [PATCH 4/4] lxd/vm: Add virtio-input keyboard/mouse
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
 lxd/instance/drivers/driver_qemu.go           | 22 +++++++++++++
 lxd/instance/drivers/driver_qemu_templates.go | 32 +++++++++++++++++++
 2 files changed, 54 insertions(+)

diff --git a/lxd/instance/drivers/driver_qemu.go b/lxd/instance/drivers/driver_qemu.go
index b8d1dad622..c2a81f479f 100644
--- a/lxd/instance/drivers/driver_qemu.go
+++ b/lxd/instance/drivers/driver_qemu.go
@@ -1721,6 +1721,28 @@ func (vm *qemu) generateQemuConfigFile(bus string, devConfs []*deviceConfig.RunC
 		return "", err
 	}
 
+	devBus, devAddr, multi = allocateBusAddr("generic")
+	err = qemuKeyboard.Execute(sb, map[string]interface{}{
+		"bus":           bus,
+		"devBus":        devBus,
+		"devAddr":       devAddr,
+		"multifunction": multi,
+	})
+	if err != nil {
+		return "", err
+	}
+
+	devBus, devAddr, multi = allocateBusAddr("generic")
+	err = qemuTablet.Execute(sb, map[string]interface{}{
+		"bus":           bus,
+		"devBus":        devBus,
+		"devAddr":       devAddr,
+		"multifunction": multi,
+	})
+	if err != nil {
+		return "", err
+	}
+
 	devBus, devAddr, multi = allocateBusAddr("generic")
 	err = qemuVsock.Execute(sb, map[string]interface{}{
 		"bus":           bus,
diff --git a/lxd/instance/drivers/driver_qemu_templates.go b/lxd/instance/drivers/driver_qemu_templates.go
index a9777d0c87..f4a6c3f1ca 100644
--- a/lxd/instance/drivers/driver_qemu_templates.go
+++ b/lxd/instance/drivers/driver_qemu_templates.go
@@ -185,6 +185,38 @@ multifunction = "on"
 {{- end }}
 `))
 
+var qemuKeyboard = template.Must(template.New("qemuKeyboard").Parse(`
+# Input
+[device "qemu_keyboard"]
+{{- if eq .bus "pci" "pcie"}}
+driver = "virtio-keyboard-pci"
+bus = "{{.devBus}}"
+addr = "{{.devAddr}}"
+{{- end}}
+{{if eq .bus "ccw" -}}
+driver = "virtio-keyboard-ccw"
+{{- end}}
+{{if .multifunction -}}
+multifunction = "on"
+{{- end }}
+`))
+
+var qemuTablet = template.Must(template.New("qemuTablet").Parse(`
+# Input
+[device "qemu_tablet"]
+{{- if eq .bus "pci" "pcie"}}
+driver = "virtio-tablet-pci"
+bus = "{{.devBus}}"
+addr = "{{.devAddr}}"
+{{- end}}
+{{if eq .bus "ccw" -}}
+driver = "virtio-tablet-ccw"
+{{- end}}
+{{if .multifunction -}}
+multifunction = "on"
+{{- end }}
+`))
+
 var qemuCPU = template.Must(template.New("qemuCPU").Parse(`
 # CPU
 [smp-opts]


More information about the lxc-devel mailing list