diff options
| author | Viacheslav Hletenko <v.gletenko@vyos.io> | 2025-12-10 15:11:53 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-10 15:11:53 +0200 |
| commit | 7d8767de8d9f61f0a9d06e91e952e20beac78120 (patch) | |
| tree | 0446dce24e88dce4b884327d30c2b01dfdf0c515 /python | |
| parent | 45e17ed4af6d14aa8d708053da936ecd6d7c0c50 (diff) | |
| parent | 84c4ceebcb442ff8fe5fe695008b2cf9be65da57 (diff) | |
| download | vyos-1x-7d8767de8d9f61f0a9d06e91e952e20beac78120.tar.gz vyos-1x-7d8767de8d9f61f0a9d06e91e952e20beac78120.zip | |
Merge pull request #4857 from sever-sever/T7819
vpp: T7819: do not override driver if it is already done
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/vpp/control_host.py | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/python/vyos/vpp/control_host.py b/python/vyos/vpp/control_host.py index 2ebfd180b..f284cbb7d 100644 --- a/python/vyos/vpp/control_host.py +++ b/python/vyos/vpp/control_host.py @@ -133,13 +133,22 @@ def override_driver(bus_id: str, device_id: str, driver_name: str = '') -> None: unbind_driver(bus_id, device_id) - # vfio-pci needs special approach + # vfio-pci requires a different workflow: drivers must be explicitly bound by + # writing the vendor/device IDs to the vfio-pci `new_id` interface. The kernel + # does not provide a reliable way to check whether an ID has already been + # registered, so we simply attempt the write and ignore the FileExistsError. + # Any other failure is treated as a warning. if driver_name == 'vfio-pci': vendor: str = Path(f'{device_resolved}/vendor').read_text() device: str = Path(f'{device_resolved}/device').read_text() - Path('/sys/module/vfio_pci/drivers/pci:vfio-pci/new_id').write_text( - f'{vendor} {device}' - ) + try: + Path('/sys/module/vfio_pci/drivers/pci:vfio-pci/new_id').write_text( + f'{vendor} {device}' + ) + except FileExistsError: + pass + except Exception as e: + print(f"Warning: failed to write new_id for vfio-pci: {e}") # override a driver Path(f'{device_resolved}/driver_override').write_text(f'{driver_name}\n') |
