Package: xen-hypervisor-4.11-amd64
Version: 4.11.1~pre.20180911.5acdd26fdc+dfsg-3
Severity: normal

Dear Maintainer,

HVM domUs that specify PCI passthrough will not start.  The same configuration 
file started under Xen 4.8.

The output I am receiving is as follows:

libxl: error: libxl_pci.c:1146:libxl__device_pci_reset: Domain 0:The kernel 
doesn't support reset from sysfs for PCI device 0000:00:14.0
libxl: error: libxl_qmp.c:292:qmp_handle_error_response: Domain 31:received an 
error message from QMP server: Binding of interrupt 0 failed: Permission denied
libxl: error: libxl_pci.c:1300:libxl__add_pcidevs: Domain 
31:libxl_device_pci_add failed: -3
libxl: error: libxl_create.c:1519:domcreate_attach_devices: Domain 31:unable to 
add pci devices
libxl: error: libxl_domain.c:1034:libxl__destroy_domid: Domain 31:Non-existant 
domain
libxl: error: libxl_domain.c:993:domain_destroy_callback: Domain 31:Unable to 
destroy guest
libxl: error: libxl_domain.c:920:domain_destroy_cb: Domain 31:Destruction of 
domain failed

(There are three PCI devices I'm trying to pass through: 00:14.0, 01:00.[01], 
and 03:00.0. I tried each set individually, and got equivalent results each 
time.)

With 'log_lvl=all guest_loglvl=all', all I get in xl dmesg is a bunch of lines 
saying "HVM<domid> save:" for CPU, PIC, IOAPIC, etc.

Google gives me nothing.  I can find a small number of (unanswered) "Binding of 
interrupt 0 failed" messages, but none about 'Permission denied'.
However, it looks like the message may be incorrect, due to an mismatch between 
qemu and libxen.  Reading through the source code:

qemu: hw/xen/xen_pt.c line 874 logs the message.
    874             error_setg_errno(errp, errno, "Binding of interrupt %u 
failed",
    875                              e_intx);

 That's using 'errno'.  However, the failed call was to 
xc_domain_bind_pt_pci_irq.

libxen: tools/libxc/xc_domain.c:1899, xc_domain_bind_pt_pci_irq forwards to 
xc_domain_bind_pt_irq
libxen: tools/libxc/xc_domain.c:1827, xc_domain_bind_pt_irq forwards to 
xc_domain_bind_pt_irq_int
libxen: tools/libxc/xc_domain.c:1783, xc_domain_bind_pt_irq_int
        If an invalid argument is passed, this function returns -1 and sets 
errno to EINVAL, matching what qemu is expecting.
        If pre-validation passes, the request is forwarded to do_domctl.
lixben: xen/common/domctl.c:380, do_domctl
        This function doesn't seem to set errno. Instead, it returns (-ETHING).

This means that, if the request is handled by do_domctl, errno is unchanged, 
and so the "Permission denied" message may be
from an EPERM left in errno from an earlier operation.



-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (900, 'testing'), (400, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.18.6 (SMP w/12 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

xen-hypervisor-4.11-amd64 depends on no packages.

Versions of packages xen-hypervisor-4.11-amd64 recommends:
ii  xen-hypervisor-common  4.11.1~pre.20180911.5acdd26fdc+dfsg-1~exp1
ii  xen-utils-4.11         4.11.1~pre.20180911.5acdd26fdc+dfsg-3

xen-hypervisor-4.11-amd64 suggests no packages.

-- no debconf information


-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (900, 'testing'), (400, 'unstable')
Architecture: amd64 (x86_64)

Kernel: Linux 4.18.6 (SMP w/12 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

xen-hypervisor-4.11-amd64 depends on no packages.

Versions of packages xen-hypervisor-4.11-amd64 recommends:
ii  xen-hypervisor-common  4.11.1~pre.20180911.5acdd26fdc+dfsg-1~exp1
ii  xen-utils-4.11         4.11.1~pre.20180911.5acdd26fdc+dfsg-3

xen-hypervisor-4.11-amd64 suggests no packages.

-- no debconf information

Reply via email to