[vfio-users] Proper way for systemd service to wait mdev gvt device initialization

Bronek Kozicki brok at spamcop.net
Sun May 19 19:59:09 UTC 2019


On Sun, 19 May 2019, at 7:45 PM, Alex Ivanov wrote:
> Hello.
> What is the proper way to do that? I have a unit that creates gvt 
> device in the system
> 
> ExecStart = "sh -c 'echo a297db4a-f4c2-11e6-90f6-d3b88d6c9525 > 
> /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_8/create'";
> ExecStop = "sh -c 'echo 1 > 
> /sys/bus/pci/devices/0000:00:02.0/a297db4a-f4c2-11e6-90f6-d3b88d6c9525/remove'";
> 
> Ideally I would to like to start this service when 0000:00:02.0 device 
> appears in the system, but the problem is that 
> /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/ tree is 
> populated later, so my service will fail.


You might want to investigate writing udev rules. Here is example rule I wrote to run a systemd service whenever a USB is plugged in:

$ cat /etc/udev/rules.d/90-libvirt-usb.rules 
ACTION=="add", \
  SUBSYSTEM=="usb", \
  RUN+="/usr/bin/systemctl --no-block --runtime start attach-usb@$attr{busnum}:$attr{devnum}:$attr{idVendor}.service"

This is actually one line, as you can see with "\" being used to glue lines together


B.




More information about the vfio-users mailing list