kata-containers/patches/0029-stratovirt-fix-the-problem-that-add-more-than-16-roo.patch
Vanient 1508e48937 kata-containers:upgrade to 2.x
Signed-off-by: Vanient <xiadanni1@huawei.com>
2022-09-05 16:08:07 +08:00

96 lines
3.3 KiB
Diff

From c455ef6f406ba317af76b48ff79db131d0594bc1 Mon Sep 17 00:00:00 2001
From: "Xinle.Guo" <guoxinle1@huawei.com>
Date: Fri, 18 Mar 2022 10:49:35 +0800
Subject: [PATCH] stratovirt: fix the problem that add more than 16 root port
devices
It will failed to start StratoVirt sandbox if pcie root prot is set
more than 16. The reason is that StratoVirt can only distinguish
hexadecimal device address number.
Signed-off-by: Xinle.Guo <guoxinle1@huawei.com>
---
src/runtime/virtcontainers/stratovirt.go | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/src/runtime/virtcontainers/stratovirt.go b/src/runtime/virtcontainers/stratovirt.go
index d2b2233..98a702a 100644
--- a/src/runtime/virtcontainers/stratovirt.go
+++ b/src/runtime/virtcontainers/stratovirt.go
@@ -102,7 +102,7 @@ func (r rootPortDevice) getParams(config *vmConfig) []string {
r.bus = "pcie.0"
}
devParams = append(devParams, Param{"bus", r.bus})
- devParams = append(devParams, Param{"addr", fmt.Sprintf("%d", r.slot)})
+ devParams = append(devParams, Param{"addr", fmt.Sprintf("0x%x", r.slot)})
driver := "pcie-root-port"
params = append(params, "-device", fmt.Sprintf("%s,%s", driver, strings.Join(SerializeParams(devParams, "="), ",")))
@@ -721,6 +721,9 @@ func (s *stratovirt) createDevices() []VirtioDev {
func (s *stratovirt) appendRootPort(ctx context.Context, devices []VirtioDev) []VirtioDev {
number := s.config.PCIeRootPort
+ if number > 20 {
+ number = 20
+ }
for i := uint32(1); i < number+1; i++ {
addr, err := s.vmConfig.rootBus.AddDevice(ctx, fmt.Sprintf("%s.%d", RootPortPrefix, i))
@@ -765,7 +768,7 @@ func (s *stratovirt) appendBlock(ctx context.Context, devices []VirtioDev) []Vir
filePath: s.vmConfig.rootfsPath,
deviceID: "virtio-blk0",
bus: bus,
- addr: fmt.Sprintf("%d", addr),
+ addr: fmt.Sprintf("0x%x", addr),
iothread: iothread,
})
@@ -791,7 +794,7 @@ func (s *stratovirt) appendRng(ctx context.Context, devices []VirtioDev) []Virti
rng: "objrng0",
deviceID: "virtio-rng0",
bus: bus,
- addr: fmt.Sprintf("%d", addr),
+ addr: fmt.Sprintf("0x%x", addr),
})
return devices
@@ -818,7 +821,7 @@ func (s *stratovirt) appendConsole(ctx context.Context, devices []VirtioDev) []V
charDev: "charconsole0",
deviceID: "virtio-console0",
bus: bus,
- addr: fmt.Sprintf("%d", addr),
+ addr: fmt.Sprintf("0x%x", addr),
})
return devices
@@ -841,7 +844,7 @@ func (s *stratovirt) appendVhostVsock(ctx context.Context, devices []VirtioDev,
id: "vsock-id",
guestID: fmt.Sprintf("%d", vsock.ContextID),
bus: bus,
- addr: fmt.Sprintf("%d", addr),
+ addr: fmt.Sprintf("0x%x", addr),
})
return devices
@@ -872,7 +875,7 @@ func (s *stratovirt) appendNetwork(ctx context.Context, devices []VirtioDev, end
deviceID: name,
bus: bus,
mac: endpoint.HardwareAddr(),
- addr: fmt.Sprintf("%d", addr),
+ addr: fmt.Sprintf("0x%x", addr),
})
return devices
@@ -904,7 +907,7 @@ func (s *stratovirt) appendVirtioFs(ctx context.Context, devices []VirtioDev, vo
tag: volume.MountTag,
deviceID: "virtio-fs0",
bus: bus,
- addr: fmt.Sprintf("%d", addr),
+ addr: fmt.Sprintf("0x%x", addr),
})
return devices
--
2.20.1.windows.1