Skip to content
This repository has been archived by the owner on May 12, 2021. It is now read-only.

Commit

Permalink
qemu: Return bridge itself with addDeviceToBridge instead of bridge bus
Browse files Browse the repository at this point in the history
Change the function to return the bridge itself that the
device is attached to. This will allow bridge address to be used
for determining the PCI slot of the device within the guest.

Signed-off-by: Archana Shinde <[email protected]>
  • Loading branch information
amshinde committed May 3, 2018
1 parent 3d1b4a1 commit dd92792
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions virtcontainers/qemu.go
Original file line number Diff line number Diff line change
Expand Up @@ -565,19 +565,19 @@ func (q *qemu) qmpSetup() (*govmmQemu.QMP, error) {
return qmp, nil
}

func (q *qemu) addDeviceToBridge(ID string) (string, string, error) {
func (q *qemu) addDeviceToBridge(ID string) (string, Bridge, error) {
var err error
var addr uint32

// looking for an empty address in the bridges
for _, b := range q.state.Bridges {
addr, err = b.addDevice(ID)
if err == nil {
return fmt.Sprintf("0x%x", addr), b.ID, nil
return fmt.Sprintf("%02x", addr), b, nil
}
}

return "", "", err
return "", Bridge{}, err
}

func (q *qemu) removeDeviceFromBridge(ID string) error {
Expand Down Expand Up @@ -616,12 +616,12 @@ func (q *qemu) hotplugBlockDevice(drive Drive, op operation) error {

if q.config.BlockDeviceDriver == VirtioBlock {
driver := "virtio-blk-pci"
addr, bus, err := q.addDeviceToBridge(drive.ID)
addr, bridge, err := q.addDeviceToBridge(drive.ID)
if err != nil {
return err
}

if err = q.qmpMonitorCh.qmp.ExecutePCIDeviceAdd(q.qmpMonitorCh.ctx, drive.ID, devID, driver, addr, bus); err != nil {
if err = q.qmpMonitorCh.qmp.ExecutePCIDeviceAdd(q.qmpMonitorCh.ctx, drive.ID, devID, driver, addr, bridge.ID); err != nil {
return err
}
} else {
Expand Down Expand Up @@ -676,12 +676,12 @@ func (q *qemu) hotplugVFIODevice(device VFIODevice, op operation) error {
devID := "vfio-" + device.DeviceInfo.ID

if op == addDevice {
addr, bus, err := q.addDeviceToBridge(devID)
addr, bridge, err := q.addDeviceToBridge(devID)
if err != nil {
return err
}

if err := q.qmpMonitorCh.qmp.ExecutePCIVFIODeviceAdd(q.qmpMonitorCh.ctx, devID, device.BDF, addr, bus); err != nil {
if err := q.qmpMonitorCh.qmp.ExecutePCIVFIODeviceAdd(q.qmpMonitorCh.ctx, devID, device.BDF, addr, bridge.ID); err != nil {
return err
}
} else {
Expand Down

0 comments on commit dd92792

Please sign in to comment.