Merge pull request #53 from sboeuf/fix_pcie_bridge

qemu: Fix the support of PCIe bridge
This commit is contained in:
Sebastien Boeuf
2018-10-02 15:47:02 -07:00
committed by GitHub
2 changed files with 27 additions and 12 deletions

View File

@@ -938,18 +938,19 @@ func (bridgeDev BridgeDevice) Valid() bool {
// QemuParams returns the qemu parameters built out of this bridge device.
func (bridgeDev BridgeDevice) QemuParams(config *Config) []string {
var qemuParams []string
var deviceParam string
switch bridgeDev.Type {
case PCIEBridge:
deviceParam = fmt.Sprintf("pcie-pci-bridge,bus=%s,id=%s", bridgeDev.Bus, bridgeDev.ID)
default:
shpc := "off"
if bridgeDev.SHPC {
shpc = "on"
}
deviceName := "pci-bridge"
if bridgeDev.Type == PCIEBridge {
deviceName = "pcie-pci-bridge"
deviceParam = fmt.Sprintf("pci-bridge,bus=%s,id=%s,chassis_nr=%d,shpc=%s", bridgeDev.Bus, bridgeDev.ID, bridgeDev.Chassis, shpc)
}
deviceParam := fmt.Sprintf("%s,bus=%s,id=%s,chassis_nr=%d,shpc=%s", deviceName, bridgeDev.Bus, bridgeDev.ID, bridgeDev.Chassis, shpc)
if bridgeDev.Addr != "" {
addr, err := strconv.Atoi(bridgeDev.Addr)
if err == nil && addr >= 0 {

View File

@@ -420,9 +420,9 @@ func TestAppendDeviceSCSIController(t *testing.T) {
testAppend(scsiCon, deviceSCSIControllerBusAddrStr, t)
}
var deviceBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff"
var devicePCIBridgeString = "-device pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,chassis_nr=5,shpc=on,addr=ff"
func TestAppendBridgeDevice(t *testing.T) {
func TestAppendPCIBridgeDevice(t *testing.T) {
bridge := BridgeDevice{
Type: PCIBridge,
@@ -433,7 +433,21 @@ func TestAppendBridgeDevice(t *testing.T) {
SHPC: true,
}
testAppend(bridge, deviceBridgeString, t)
testAppend(bridge, devicePCIBridgeString, t)
}
var devicePCIEBridgeString = "-device pcie-pci-bridge,bus=/pci-bus/pcie.0,id=mybridge,addr=ff"
func TestAppendPCIEBridgeDevice(t *testing.T) {
bridge := BridgeDevice{
Type: PCIEBridge,
ID: "mybridge",
Bus: "/pci-bus/pcie.0",
Addr: "255",
}
testAppend(bridge, devicePCIEBridgeString, t)
}
func TestAppendEmptyDevice(t *testing.T) {