diff --git a/pkg/hostman/guestman/guesttasks.go b/pkg/hostman/guestman/guesttasks.go index dbd8fe84af..3083a560ac 100644 --- a/pkg/hostman/guestman/guesttasks.go +++ b/pkg/hostman/guestman/guesttasks.go @@ -995,7 +995,7 @@ func (t *SGuestIsolatedDeviceSyncTask) addDevice(dev *desc.SGuestIsolatedDevice) } } - opts, err := devObj.GetHotPlugOptions(dev) + opts, err := devObj.GetHotPlugOptions(dev, t.guest.Desc) if err != nil { cb(errors.Wrap(err, "GetHotPlugOptions").Error()) return diff --git a/pkg/hostman/isolated_device/isolated_device.go b/pkg/hostman/isolated_device/isolated_device.go index 9a643a51d4..ae5e53329b 100644 --- a/pkg/hostman/isolated_device/isolated_device.go +++ b/pkg/hostman/isolated_device/isolated_device.go @@ -99,7 +99,7 @@ type IDevice interface { GetMdevId() string GetNVIDIAVgpuProfile() map[string]string - GetHotPlugOptions(isolatedDev *desc.SGuestIsolatedDevice) ([]*HotPlugOption, error) + GetHotPlugOptions(isolatedDev *desc.SGuestIsolatedDevice, guestDesc *desc.SGuestDesc) ([]*HotPlugOption, error) GetHotUnplugOptions(isolatedDev *desc.SGuestIsolatedDevice) ([]*HotUnplugOption, error) // Get extra PCIE information @@ -639,7 +639,7 @@ func (dev *sBaseDevice) CustomProbe(idx int) error { return nil } -func (dev *sBaseDevice) GetHotPlugOptions(isolatedDev *desc.SGuestIsolatedDevice) ([]*HotPlugOption, error) { +func (dev *sBaseDevice) GetHotPlugOptions(isolatedDev *desc.SGuestIsolatedDevice, guestDesc *desc.SGuestDesc) ([]*HotPlugOption, error) { ret := make([]*HotPlugOption, 0) var masterDevOpt *HotPlugOption diff --git a/pkg/hostman/isolated_device/nvidia_vgpu.go b/pkg/hostman/isolated_device/nvidia_vgpu.go index 0c48546e3a..a5eec31dba 100644 --- a/pkg/hostman/isolated_device/nvidia_vgpu.go +++ b/pkg/hostman/isolated_device/nvidia_vgpu.go @@ -160,7 +160,7 @@ func (dev *sNVIDIAVgpuDevice) GetQemuId() string { return "dev_" + dev.mdevId } -func (dev *sNVIDIAVgpuDevice) GetHotPlugOptions(isolatedDev *desc.SGuestIsolatedDevice) ([]*HotPlugOption, error) { +func (dev *sNVIDIAVgpuDevice) GetHotPlugOptions(isolatedDev *desc.SGuestIsolatedDevice, guestDesc *desc.SGuestDesc) ([]*HotPlugOption, error) { ret := make([]*HotPlugOption, 0) var masterDevOpt *HotPlugOption diff --git a/pkg/hostman/isolated_device/usb.go b/pkg/hostman/isolated_device/usb.go index 7d6f9224c8..f66e9cc9d6 100644 --- a/pkg/hostman/isolated_device/usb.go +++ b/pkg/hostman/isolated_device/usb.go @@ -121,11 +121,13 @@ func (dev *sUSBDevice) GetPassthroughCmd(index int) string { return opt } -func (dev *sUSBDevice) GetHotPlugOptions(*desc.SGuestIsolatedDevice) ([]*HotPlugOption, error) { +func (dev *sUSBDevice) GetHotPlugOptions(isolatedDev *desc.SGuestIsolatedDevice, guestDesc *desc.SGuestDesc) ([]*HotPlugOption, error) { opts, err := GetUSBDevQemuOptions(dev.dev.GetVendorDeviceId(), dev.dev.Addr) if err != nil { return nil, errors.Wrap(err, "GetUSBDevQemuOptions") } + opts["id"] = isolatedDev.Usb.Id + opts["bus"] = fmt.Sprintf("%s.0", guestDesc.Usb.Id) return []*HotPlugOption{ { Device: "usb-host",