我们正在arm64/virt平台上运行kata。当我们试图热插拔设备时,出现了一个错误。
{"QMP": {"version": {"qemu": {"micro": 0, "minor": 1, "major": 6}, "package": "kata-static"}, "capabilities": ["oob"]}} { "execute" : "qmp_capabilities" } {"return": {}} { "execute": "blockdev-add", "arguments": { "driver": "raw", "node-name": "drive-virtio-disk1", "file": {"driver": "host_device", "filename": "/dev/loop9"}}} {"return": {}} { "execute": "device_add", "arguments": { "driver": "virtio-blk-pci", "drive": "drive-virtio-disk1", "bus": "pci-bridge-0" } } {"error": {"class": "GenericError", "desc": "Bus 'pci-bridge-0' does not support hotplugging"}}
我打开的配置:
hotplug_vfio_on_root_bus = true pcie_root_port = 2
我发现一些代码可能是相关的。 这些配置对arm64/virt有效吗? 我对pci/pcie了解不多。你能就这个问题提供一些建议吗? 谢谢
也许qemu-virt仿真有什么问题?我们使用的是qemu版本6.1.0。
我意识到我们的问题是pci-bridge-0不支持热插拔,所以它应该与根总线和根端口无关。
原提问者GitHub用户cheriL 如对项目有进一步反馈,请在 GitHub 提交 issue https://github.com/kata-containers/kata-containers/issues
首先,让我们解释一下PCI和PCIe的热插拔是什么意思。热插拔是指在系统运行时插入或拔出设备,而不需要关闭系统。PCI(Peripheral Component Interconnect)和PCIe(PCI Express)是计算机内部连接硬件设备的标准。但是,并非所有PCI和PCIe总线都支持热插拔。
现在让我们回到你的问题,你正在运行kata容器,试图在arm64/virt平台上热插拔PCI/PCIe设备时遇到了错误。
异常错误中的“Bus 'pci-bridge-0' does not support hotplugging”表明pci-bridge-0与根总线和根端口无关,它表示虚拟化平台的虚拟化桥接设备(可能由QEMU扮演)不支持PCI/PCIe的热插拔设备。 因此,你需要确定你使用的QEMU版本支持你想要的功能。
现在,QEMU版本6.1.0支持PCI/PCIe的热拔插,但仍可能存在其他因素导致你的问题。
建议: 1.确保你的QEMU版本支持PCI/PCIe的热插拔,也可以尝试使用最新的版本进行测试。 2.了解你要插入的设备是否支持PCIe热插拔,如果它不支持,那么无论什么情况下都不能热插拔。 3.确保你的虚拟机平台(virt)支持PCIe热插拔设备。
通过这些步骤,你可以更容易地解决问题并开发PCI/PCIe热插拔设备。
我认为你的kata代码库有点旧了。您可以提取最新的代码并进行构建。在启动最新的kata并在配置中设置“pcie_root_port”后,会添加一个额外的pcie根端口桥。您可以将块设备添加到pcie根端口中。
此外,当使用ctr运行kata时,您可以通过“--device${device_path}”将块设备传递给kata。
原回答者GitHub用户jongwu 如对项目有进一步反馈,请在 GitHub 提交 issue https://github.com/kata-containers/kata-containers/issues
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。