Documentation ¶
Index ¶
- Constants
- Variables
- func GetApiResourceData(dev IDevice) *jsonutils.JSONDict
- func GetUSBDevId(vendorId, devId, bus, addr string) string
- func GetUSBDevQemuOptions(vendorDevId string, addr string) (map[string]string, error)
- func NewGPUHPCDevice(dev *PCIDevice) *sGPUHPCDevice
- func NewNvidiaVgpuDevice(dev *PCIDevice, devType, mdevId, model string, profile map[string]string) *sNVIDIAVgpuDevice
- func NewSRIOVGpuDevice(dev *PCIDevice, devType string) *sSRIOVGpuDevice
- func NewSRIOVNicDevice(dev *PCIDevice, devType, wireId, pfName string, virtfn int, ...) *sSRIOVNicDevice
- func NewSRIOVOffloadNicDevice(dev *PCIDevice, devType, wireId, pfName string, virtfn int, ifname string) *sOvsOffloadNicDevice
- func ParseOutput(output []byte, doTrim bool) []string
- func SyncDeviceInfo(session *mcclient.ClientSession, hostId string, dev IDevice) (jsonutils.JSONObject, error)
- type CloudDeviceInfo
- type HostNic
- type HotPlugOption
- type HotUnplugOption
- type IDevice
- type IExecutor
- type IHost
- type IOMMUGroup
- type IsolatedDeviceManager
- type IsolatedDeviceModel
- type PCIDevice
- type QemuParams
- type SDefaultExecutor
Constants ¶
View Source
const ( CLASS_CODE_VGA = "0300" CLASS_CODE_3D = "0302" CLASS_CODE_DISP = "0380" )
View Source
const ( BUSID_REGEX = `[0-9a-fA-F]{2}:[0-9a-fA-F]{2}\.[0-9a-fA-F]` CODE_REGEX = `[0-9a-fA-F]{4}` LABEL_REGEX = `[\w+\ \.\,\:\+\&\-\/\[\]\(\)]+` VFIO_PCI_KERNEL_DRIVER = "vfio-pci" DEFAULT_VGA_CMD = " -vga std" // 在qemu/kvm下模拟Windows Hyper-V的一些半虚拟化特性,以便更好地使用Win虚拟机 // http://blog.wikichoon.com/2014/07/enabling-hyper-v-enlightenments-with-kvm.html // 但实际测试不行,虚拟机不能运行nvidia驱动 // DEFAULT_CPU_CMD = "host,kvm=off,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time" DEFAULT_CPU_CMD = "host,kvm=off" )
View Source
const (
RESOURCE = "isolated_devices"
)
Variables ¶
View Source
var ( GpuClassCodes = []string{ CLASS_CODE_VGA, CLASS_CODE_3D, CLASS_CODE_DISP, } )
Functions ¶
func GetApiResourceData ¶
func GetUSBDevId ¶
func GetUSBDevQemuOptions ¶
func NewGPUHPCDevice ¶
func NewGPUHPCDevice(dev *PCIDevice) *sGPUHPCDevice
func NewNvidiaVgpuDevice ¶
func NewSRIOVGpuDevice ¶
func NewSRIOVNicDevice ¶
func ParseOutput ¶
func SyncDeviceInfo ¶
func SyncDeviceInfo(session *mcclient.ClientSession, hostId string, dev IDevice) (jsonutils.JSONObject, error)
Types ¶
type CloudDeviceInfo ¶
type CloudDeviceInfo struct { Id string `json:"id"` GuestId string `json:"guest_id"` HostId string `json:"host_id"` DevType string `json:"dev_type"` VendorDeviceId string `json:"vendor_device_id"` Addr string `json:"addr"` DetectedOnHost bool `json:"detected_on_host"` MdevId string `json:"mdev_id"` }
type HotPlugOption ¶
type HotUnplugOption ¶
type HotUnplugOption struct {
Id string
}
type IDevice ¶
type IDevice interface { String() string GetCloudId() string GetHostId() string SetHostId(hId string) GetGuestId() string GetWireId() string IsInfinibandNic() bool GetOvsOffloadInterfaceName() string GetVendorDeviceId() string GetAddr() string GetDeviceType() string GetModelName() string CustomProbe(idx int) error SetDeviceInfo(info CloudDeviceInfo) DetectByAddr() error GetPassthroughOptions() map[string]string GetPassthroughCmd(index int) string GetIOMMUGroupDeviceCmd() string GetIOMMUGroupRestAddrs() []string GetVGACmd() string GetCPUCmd() string GetQemuId() string GetNumaNode() (int, error) // sriov nic GetPfName() string GetVirtfn() int // NVMe disk GetNVMESizeMB() int // legacy nvidia vgpu GetMdevId() string GetNVIDIAVgpuProfile() map[string]string GetHotPlugOptions(isolatedDev *desc.SGuestIsolatedDevice, guestDesc *desc.SGuestDesc) ([]*HotPlugOption, error) GetHotUnplugOptions(isolatedDev *desc.SGuestIsolatedDevice) ([]*HotUnplugOption, error) // Get extra PCIE information GetPCIEInfo() *api.IsolatedDevicePCIEInfo }
type IExecutor ¶
func GetDefaultExecutor ¶
func GetDefaultExecutor() IExecutor
type IHost ¶
type IHost interface { GetHostId() string GetSession() *mcclient.ClientSession AppendHostError(content string) AppendError(content, objType, id, name string) }
type IOMMUGroup ¶
type IOMMUGroup struct {
// contains filtered or unexported fields
}
func NewIOMMUGroup ¶
func NewIOMMUGroup() (*IOMMUGroup, error)
func (*IOMMUGroup) FindSameGroupDevs ¶
func (g *IOMMUGroup) FindSameGroupDevs(devAddr string, vendorId string) []*PCIDevice
func (*IOMMUGroup) ListDevices ¶
func (g *IOMMUGroup) ListDevices(groupNum, selfAddr, vendorId string) []*PCIDevice
func (*IOMMUGroup) String ¶
func (g *IOMMUGroup) String() string
type IsolatedDeviceManager ¶
type IsolatedDeviceManager interface { GetDevices() []IDevice GetDeviceByIdent(vendorDevId, addr, mdevId string) IDevice GetDeviceByAddr(addr string) IDevice ProbePCIDevices(skipGPUs, skipUSBs, skipCustomDevs bool, sriovNics, ovsOffloadNics []HostNic, nvmePciDisks, amdVgpuPFs, nvidiaVgpuPFs []string, enableWhitelist bool) StartDetachTask() BatchCustomProbe() AppendDetachedDevice(dev *CloudDeviceInfo) GetQemuParams(devAddrs []string) *QemuParams }
func NewManager ¶
func NewManager(host IHost) IsolatedDeviceManager
type IsolatedDeviceModel ¶
type PCIDevice ¶
type PCIDevice struct { Addr string `json:"bus_id"` ClassName string `json:"class_name"` ClassCode string `json:"class_code"` VendorName string `json:"vendor_name"` VendorId string `json:"vendor_id"` DeviceName string `json:"device_name"` DeviceId string `json:"device_id"` SubvendorName string `json:"subvendor_name"` SubvendorId string `json:"subvendor_id"` SubdeviceName string `json:"subdevice_name"` SubdeviceId string `json:"subdevice_id"` ModelName string `json:"model_name"` RestIOMMUGroupDevs []*PCIDevice `json:"-"` PCIEInfo *api.IsolatedDevicePCIEInfo `json:"pcie_info"` }
func NewPCIDevice2 ¶
func (*PCIDevice) GetVendorDeviceId ¶
func (*PCIDevice) IsVFIOPCIDriverUsed ¶
type QemuParams ¶
type SDefaultExecutor ¶
type SDefaultExecutor struct{}
Click to show internal directories.
Click to hide internal directories.