Ejemplo n.º 1
0
def _bind_device_to_vfio(pci_address, driver):
    if _using_virtio(pci_address):
        _enable_unsafe_vfio_noiommu_mode()
    else:
        rc, _, _, = exec_cmd(['modinfo', 'vfio-pci'])
        if rc:
            rc, _, err = exec_cmd(['modprobe', 'vfio-pci'])
            if rc:
                raise Exception(
                    'Could not load vfio-pci module: {}'.format(err))

    _bind_device_to_driver(pci_address, driver)
Ejemplo n.º 2
0
def _enable_unsafe_vfio_noiommu_mode():
    _remove_vfio_pci()
    _remove_vfio()

    rc, _, err = exec_cmd(['modprobe', 'vfio', 'enable_unsafe_noiommu_mode=1'])
    if rc:
        raise Exception('Could not set unsafe noiommu mode: {}'.format(err))
Ejemplo n.º 3
0
def _remove_module(module):
    rc, _, err = exec_cmd(['modprobe', '-r', module])
    if rc:
        if 'No such file' in err:
            return
        else:
            raise Exception('Could not remove {} module: {}'.format(
                module, err))
Ejemplo n.º 4
0
def _get_kernel_args():
    rc, out, err = exec_cmd(['grubby', '--info', _get_default_kernel()])
    if rc != 0:
        raise ReadKernelArgsError(err)

    return [
        l.split('=', 1)[1].strip('"') for l in out.split('\n')
        if l.startswith('args')
    ][0]
Ejemplo n.º 5
0
def _add_iommu():
    if _is_iommu_set():
        return False

    rc, _, err = exec_cmd([
        'grubby', '--args=iommu=pt intel_iommu=on',
        '--update-kernel={}'.format(_get_default_kernel())
    ])
    if rc != 0:
        raise UpdateKernelError(err)
    return True
Ejemplo n.º 6
0
def _remove_override(pci_address):
    rc, _, err = exec_cmd(['driverctl', 'unset-override', pci_address])
    if rc:
        raise Exception(
            'Could not remove driver override of device {}: {}'.format(
                pci_address, err))
Ejemplo n.º 7
0
def _bind_device_to_driver(pci_address, driver):
    rc, _, err = exec_cmd(['driverctl', 'set-override', pci_address, driver])
    if rc:
        raise Exception('Could not bind device {} to {}: {}'.format(
            pci_address, driver, err))
Ejemplo n.º 8
0
def _select_cpu_partitioning(cpu_list):
    profile = 'cpu-partitioning' if cpu_list else 'balanced'
    rc, _, err = exec_cmd(['tuned-adm', 'profile', profile])
    if rc != 0:
        raise SelectCpuPartitioningError(err)