summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2025-12-10 15:11:53 +0200
committerGitHub <noreply@github.com>2025-12-10 15:11:53 +0200
commit7d8767de8d9f61f0a9d06e91e952e20beac78120 (patch)
tree0446dce24e88dce4b884327d30c2b01dfdf0c515 /python
parent45e17ed4af6d14aa8d708053da936ecd6d7c0c50 (diff)
parent84c4ceebcb442ff8fe5fe695008b2cf9be65da57 (diff)
downloadvyos-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.py17
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')