{% extends "base.html" %} {% load i18n %} {% load static %} {% load bootstrap_icons %} {% block title %}{% trans "Devices" %} - {{ compute.name }}{% endblock %} {% block page_heading %}{{ compute.name }} - {% trans "Devices" %}{% endblock page_heading %} {% block content %} {% include "computes/host_nav.html" with section="nodedevs" %} {% if devices_read %} {% if pci_count and not iommu %}
{% bs_icon 'exclamation-triangle' %} {% blocktrans %}No IOMMU groups detected: a PCI device cannot be given to a VM. The host needs its IOMMU (Intel VT-d, AMD-Vi) turned on in the firmware and the kernel; on Intel, boot it with intel_iommu=on.{% endblocktrans %}
{% endif %}
{% trans "PCI devices" %} {{ pci_count }}
{% if pci_count %}
{% for group, devices in groups %} {% for device in devices %} {% endfor %} {% endfor %}
{% trans "Address" %} {% trans "Device" %} {% trans "Type" %} {% trans "Driver" %} {% trans "Host resources" %} {% trans "Used by" %}
{% if group is None %}{% trans "Without an IOMMU group" %}{% else %}{% blocktrans %}IOMMU group {{ group }}{% endblocktrans %}{% endif %}
{{ device.address }}
{{ device.product }}
{{ device.vendor }} {{ device.ids }}
{% if device.physfn %}
{% blocktrans with address=device.physfn %}Virtual function of {{ address }}{% endblocktrans %}
{% endif %} {% if device.vfs %}
{% blocktrans count counter=device.vfs %}{{ counter }} virtual function{% plural %}{{ counter }} virtual functions{% endblocktrans %}
{% endif %}
{{ device.kind }} {{ device.driver|default:"–" }} {% include "nodedev_resources.html" %} {% include "nodedev_users.html" %}
{% else %}
{% trans "The host reports no PCI devices." %}
{% endif %}
{% trans "USB devices" %} {{ usb|length }}
{% if usb %}
{% for device in usb %} {% endfor %}
{% trans "Bus / device" %} {% trans "Device" %} {% trans "Type" %} {% trans "Host resources" %} {% trans "Used by" %}
{{ device.bus }} / {{ device.device }}
{{ device.product }}
{{ device.vendor }} {{ device.ids }}
{% if device.same_model %}
{% trans "One of several of this model: a VM that names the model alone may take any of them." %}
{% endif %}
{{ device.kinds|join:", "|default:"–" }} {% include "nodedev_resources.html" %} {% if device.vms or not device.by_model %}{% include "nodedev_users.html" %}{% endif %} {% if device.by_model %}
{% blocktrans with vms=device.by_model|join:", " %}By model: {{ vms }}{% endblocktrans %}
{% endif %}
{% else %}
{% trans "The host reports no USB devices." %}
{% endif %}
{% endif %} {% endblock %} {% block script %} {% if devices_read %}{% endif %} {% endblock %}