mirror of
https://github.com/clearml/go-nvlib
synced 2025-05-17 18:04:55 +00:00
Detect driver bound to mdev devices
Signed-off-by: Christopher Desiniotis <cdesiniotis@nvidia.com>
This commit is contained in:
parent
805db5afa8
commit
8209652159
@ -196,6 +196,15 @@ func (m *MockNvmdev) AddMockA100Mdev(uuid string, mdevType string, mdevTypeDir s
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = os.Create(filepath.Join(mdevDeviceDir, "vfio_mdev"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = os.Symlink(filepath.Join(mdevDeviceDir, "vfio_mdev"), filepath.Join(mdevDeviceDir, "driver"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = os.Symlink(mdevDeviceDir, filepath.Join(m.mdevDevicesRoot, uuid))
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -56,6 +56,7 @@ type Device struct {
|
||||
Path string
|
||||
UUID string
|
||||
MDEVType string
|
||||
Driver string
|
||||
Parent *ParentDevice
|
||||
}
|
||||
|
||||
@ -143,10 +144,16 @@ func NewDevice(root string, uuid string) (*Device, error) {
|
||||
return nil, fmt.Errorf("error getting mdev type: %v", err)
|
||||
}
|
||||
|
||||
driver, err := m.driver()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error detecting driver: %v", err)
|
||||
}
|
||||
|
||||
device := Device{
|
||||
Path: path,
|
||||
UUID: uuid,
|
||||
MDEVType: mdevType,
|
||||
Driver: driver,
|
||||
Parent: parent,
|
||||
}
|
||||
|
||||
@ -193,6 +200,14 @@ func (m mdev) Type() (string, error) {
|
||||
return mdevTypeSplit[1], nil
|
||||
}
|
||||
|
||||
func (m mdev) driver() (string, error) {
|
||||
driver, err := filepath.EvalSymlinks(path.Join(string(m), "driver"))
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return filepath.Base(driver), nil
|
||||
}
|
||||
|
||||
// NewParentDevice constructs a ParentDevice
|
||||
func NewParentDevice(devicePath string) (*ParentDevice, error) {
|
||||
nvdevice, err := nvpci.NewDevice(devicePath)
|
||||
|
@ -46,4 +46,5 @@ func TestNvmdev(t *testing.T) {
|
||||
mdevs, err := nvmdev.GetAllDevices()
|
||||
require.Nil(t, err, "Error getting NVIDIA MDEV (vGPU) devices")
|
||||
require.Equal(t, 1, len(mdevs), "Wrong number of NVIDIA MDEV (vGPU) devices")
|
||||
require.Equal(t, "vfio_mdev", mdevs[0].Driver, "Wrong driver detected for mdev device")
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user