GVM User Suite
User tools for the GVM open source project.
Possible Side Effects

Contains the list of all possible side effects.

This is where we map which side effect is located where, as well as what are potential issues with having them implemented.

Global _RM_CTRL (fd, client, object, cmd, data)
Macro for rm_ctrl_res
Global create_nv_mgr ()

File System Side Effect: Can potentially create a few /dev files.

File System Side Effect: Opens /dev/nvidiactl.

File System Side Effect: Opens /dev/nvidiad for different GPUs.

RM Side Effect: Creates a RM Client.

RM Side Effect: Attaches a GPU to /dev/nvidiad.

RM Side Effect: Creates a RM Device Id.

RM Side Effect: Creates a RM Sub Device Id.

RM Side Effect: Creates a mdev configurator id.

Global create_nv_mgr_mdevs (struct NvMdev *mgr, struct Gpu *limited, size_t gpu_size, struct MDevRequest *requested, size_t mdev_size)
RM Side Effect: Creates mdevs on a requested GPU.
Global device_exists (const char *device_name)
File System Side Effect: This checks the file system, specifically the device tree.
Global free_nv_mgr (struct NvMdev *mgr)

RM Side Effect: Deletes a RM Client.

RM Side Effect: DeAttaches a GPU from /dev/nvidiad.

RM Side Effect: Deletes a RM Device Id.

RM Side Effect: Deletes a RM Sub Device Id.

RM Side Effect: Deletes a mdev configurator id.

Global get_major (const char *device)
File System Side Effect: Checks the major number of a device.
Global get_param (const char *filename, const char *parameter)
File System Side Effect: Checks the device parameter file for a value.
Global handle_vm_start (struct VmMgr *mgr, struct NvMdev *mdev_mgr)
VM Side Effect: Starts a VM.
Global init_nv_vm_mgr (struct NvMdev *mgr)
RM Side Effect: Creates a start and a bind operation to the VM object.
Global register_nv_mgr_mdevs (struct NvMdev *mgr)
RM Side Effect: Creates mdevs in the OS.
Global rm_alloc_res (int fd, struct NvResource *parent, uint32_t object, uint32_t rm_class, void *data)

RM Side Effect: Allocates an object with a specific class in the RM Core, for safety purposes we should call a free res for all resources available on the system. However it is not strictly necessary as there is a garbage collector inside the RM Core.

State Side Effect: Parent node is modified, to have a new child.

Global RM_CTRL (fd, res, cmd, data)
Macro for rm_ctrl_res
Global rm_ctrl_res (int fd, uint32_t client, uint32_t device, uint32_t command, void *data, uint32_t size)

RM Side Effect: Performs a potentially unsafe method on an object in the kernel.

Log Side Effect: Logs incorrect information.

Global rm_free_res (int fd, struct NvResource *object)
RM Side Effect: Deallocates an object with a specific id in the RM Core.
Global rm_free_tree (int fd, struct NvResource *root)
RM Side Effect: Deallocates an object with a specific root in the RM Core.
Global rm_version_check (int ctl_fd, uint8_t ignore_version, const char *version)
RM Side Effect: Enables the file descriptor to connect to the device.
Global start_vm (struct VmMgr *mgr, struct NvMdev *mdev_mgr)
VM Side Effect: Starts a VM.