[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