** Description changed:
- When using VFIO for passthrough devices, 2 apparmor violations are
- encountered:
+ ===========================================
+ SRU Justification:
+ Impact: VFIO passthrough does not work with libvirt
+ Test case: See "example xml" below
+ Regression potential: This only adds permission for qemu to access /dev/vfio*
when needed, plus cap_sys_resource for libvirtd. No currently working case
should be regressed.
+ ===========================================
+ When using VFIO for passthrough devices, 2 apparmor violations are
encountered:
1) all memory of the VM must be locked, libvirt tries to increase
RLIMIT_MEMLOCK
2) access to /dev/vfio/XX is needed by qemu
example xml:
- <hostdev mode='subsystem' type='pci' managed='yes'>
- <driver name='vfio'/>
- <source>
- <address domain='0x0000' bus='0x03' slot='0x00' function='0x1'/>
- </source>
- </hostdev>
-
+ <hostdev mode='subsystem' type='pci' managed='yes'>
+ <driver name='vfio'/>
+ <source>
+ <address domain='0x0000' bus='0x03' slot='0x00' function='0x1'/>
+ </source>
+ </hostdev>
issue #1:
error message on start of VM:
error: internal error: Process exited prior to exec: libvirt: error :
cannot limit locked memory to 18253611008: Operation not permitted
apparmor log:
kernel: [ 783.469784] type=1400 audit(1391620864.251:35):
apparmor="DENIED" operation="capable" profile="/usr/sbin/libvirtd"
pid=2106 comm="libvirtd" capability=24 capname="sys_resource"
-
issue #2:
error message on start of VM:
qemu-system-x86_64: -device
vfio-pci,host=03:00.0,id=hostdev0,bus=pci.0,addr=0x6: vfio: error opening
/dev/vfio/21: Permission denied
qemu-system-x86_64: -device
vfio-pci,host=03:00.0,id=hostdev0,bus=pci.0,addr=0x6: vfio: failed to get group
21
qemu-system-x86_64: -device
vfio-pci,host=03:00.0,id=hostdev0,bus=pci.0,addr=0x6: Device initialization
failed.
qemu-system-x86_64: -device
vfio-pci,host=03:00.0,id=hostdev0,bus=pci.0,addr=0x6: Device 'vfio-pci' could
not be initialized
apparmor log:
kernel: [ 1209.299820] type=1400 audit(1391624317.063:46):
apparmor="DENIED" operation="open" profile="libvirt-
014a4d4f-7644-4cf1-c408-8abb631b3e34" name="/dev/vfio/21" pid=2916 comm
="qemu-system-x86" requested_mask="rw" denied_mask="rw" fsuid=106
ouid=106
-
workaround:
sudo aa-complain /usr/sbin/libvirtd
sudo aa-complain
/etc/apparmor.d/libvirt/libvirt-????????-????-????-????-????????????
-
testing with latest Trusty:
ii libvirt-bin 1.2.1-0ubuntu5 amd64 programs for the libvirt library
ii libvirt0 1.2.1-0ubuntu5 amd64 library for interfacing with different
virtualization systems
** Changed in: libvirt (Ubuntu Trusty)
Importance: Undecided => High
** Changed in: libvirt (Ubuntu Trusty)
Status: New => Confirmed
** Changed in: libvirt (Ubuntu)
Importance: Medium => High
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1276719
Title:
apparmor denies VFIO passthrough: RLIMIT_MEMLOCK and /dev/vfio/XX
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1276719/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs