Re: pci passthrough with KVM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 30, 2010 at 11:38:21AM +0200, Inigo Losada wrote:
> 
> El 29/09/2010, a las 10:56, Sebastian Hetze escribió:
> 
> > On Tue, Sep 28, 2010 at 10:27:18AM +0200, Inigo Losada wrote:
> >> We are using pci passthrough with an SCSI Adapter card. The system is:
> >> 
> >> -  O.S:  Ubuntu 10.04.1 LTS
> >> -  KVM Packages: 
> >> 
> >> kvm    1:84+dfsg-0ubuntu16+0.12.3+noroms+0ubuntu9.2
> >> kvm-pxe   5.4.4-1ubuntu1
> >> qemu-kvm     0.12.3+noroms-0ubuntu9.2 
> >> libvirt-bin      0.7.5-5ubuntu27.2
> >> python-libvirt    0.7.5-5ubuntu27.2
> >> libvirt0        0.7.5-5ubuntu27.2
> >> 
> >> - Kernel  2.6.32.15+drm33.5.iommu    recompiled with following options :
> >> 
> >> CONFIG_DMAR=y
> >> CONFIG_INTR_REMAP=y
> >> 
> >> - Apparmor is stopped
> >> 
> >> When we started the virtual machine we obtain the following error: 
> >> 
> >> char device redirected to /dev/pts/3 
> >> device: 04:04.0: driver="pci-assign" host="04:04.0" 
> >> Failed to assign irq for "04:04.0": Operation not permitted 
> >> Perhaps you are assigning a device that shares an IRQ with another device? 
> > 
> > So do you?
> > 
> > The notes in
> > http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM
> > give you this information:
> > 
> >    *  VT-d spec specifies that all conventional PCI devices behind a
> >    *  PCIe-to PCI/PCI-X bridge or conventional PCI bridge can only be
> >    *  collectively assigned to the same guest. PCIe devices do not have
> >    *  this restriction.
> >    *  If the device doesn't support MSI, and it shares IRQ with other
> >    *  devices, then it cannot be assigned due to host irq sharing for
> >    *  assigned devices is not supported. You will get warning message
> >    *  when you assign it. Notice this also apply to the devices which
> >    *  only support MSI-X. 
> > 
> > What do you find in /proc/interrupts ?
> > 
> 
>  cat /proc/interrupts 
>             CPU0       CPU1       CPU2       CPU3       CPU4       CPU5       CPU6       CPU7       
>    0: 1000831147          0          0          0          0          0          0          0  IR-IO-APIC-edge      timer
>    1:         90          0          0          0          0          0          0          0  IR-IO-APIC-edge      i8042
>    3:          2          0          0          0          0          0          0          0  IR-IO-APIC-edge    
>    4:          2          0          0          0          0          0          0          0  IR-IO-APIC-edge    
>    8:          1          0          0          0          0          0          0          0  IR-IO-APIC-edge      rtc0
>    9:          0          0          0          0          0          0          0          0  IR-IO-APIC-fasteoi   acpi
>   12:        135        300          0          0          0          0          0          0  IR-IO-APIC-edge      i8042
>   16:          0          0          0          0          0          0          0          0  IR-IO-APIC-fasteoi   uhci_hcd:usb3
>   18:          2          0          0          0          0          0          0          0  IR-IO-APIC-fasteoi   ehci_hcd:usb1, uhci_hcd:usb8
>   19:          0          0          0          0          0          0          0          0  IR-IO-APIC-fasteoi   ata_piix, ata_piix, uhci_hcd:usb5, uhci_hcd:usb7
>   21:         31          0          0          0          0          0          0          0  IR-IO-APIC-fasteoi   uhci_hcd:usb4
>   23:         93          0          0   21758350          0          0          0          0  IR-IO-APIC-fasteoi   ehci_hcd:usb2, uhci_hcd:usb6
>   26:        157          0        317          0          0          0          0          0  IR-IO-APIC-fasteoi 
>   30:       4437    6102626          0          0          0          0          0          0  IR-IO-APIC-fasteoi   3w-9xxx
>   48:          0          0          0          0          0          0          0          0  DMAR_MSI-edge      dmar0
>   55:          0          0          0          0          0          0          0          0  IR-PCI-MSI-edge      eth0
>   56:         28          0    4148662          0         12         22         70          0  IR-PCI-MSI-edge      eth0-TxRx-0
>   57:         29          0          0    2495606          0          0          0          0  IR-PCI-MSI-edge      eth0-TxRx-1
>   58:         21    2704034          0          0         13         10          0          0  IR-PCI-MSI-edge      eth0-TxRx-2
>   59:         26          0          0          0          0          0          0    1838420  IR-PCI-MSI-edge      eth0-TxRx-3
>   60:         51          0          0          0          0          0    8249009          0  IR-PCI-MSI-edge      eth0-TxRx-4
>   61:    1531450          0          0          0         10          0          0          0  IR-PCI-MSI-edge      eth0-TxRx-5
>   62:         44          0          0          0          0    2176663          0          0  IR-PCI-MSI-edge      eth0-TxRx-6
>   63:         24          0          0          0    1359843          0          0          0  IR-PCI-MSI-edge      eth0-TxRx-7
>   91:          3          0          0          0          0          0          0          0  IR-PCI-MSI-edge      ioat-msix
>   92:          3          0          0          0          0          0          0          0  IR-PCI-MSI-edge      ioat-msix
>   93:          3          0          0          0          0          0          0          0  IR-PCI-MSI-edge      ioat-msix
>   94:          3          0          0          0          0          0          0          0  IR-PCI-MSI-edge      ioat-msix
>   95:          3          0          0          0          0          0          0          0  IR-PCI-MSI-edge      ioat-msix
>   96:          3          0          0          0          0          0          0          0  IR-PCI-MSI-edge      ioat-msix
>   97:          3          0          0          0          0          0          0          0  IR-PCI-MSI-edge      ioat-msix
>   98:          3          0          0          0          0          0          0          0  IR-PCI-MSI-edge      ioat-msix
>  NMI:          0          0          0          0          0          0          0          0   Non-maskable interrupts
>  LOC:  550286961  678566029  748548019  733777570  517827192  430331367  268714238  527520322   Local timer interrupts
>  SPU:          0          0          0          0          0          0          0          0   Spurious interrupts
>  PMI:          0          0          0          0          0          0          0          0   Performance monitoring interrupts
>  PND:          0          0          0          0          0          0          0          0   Performance pending work
>  RES:   73223541   59311048   49506524   42871500   37975243   32106528   31106285   27747552   Rescheduling interrupts
>  CAL:    2206175    1509174    2056330    1638734    1690520    1739439    1196679     985504   Function call interrupts
>  TLB:    3277203    2666047    3158856    2614034    2243049    2215414    1477134    1538333   TLB shootdowns
>  TRM:          0          0          0          0          0          0          0          0   Thermal event interrupts
>  THR:          0          0          0          0          0          0          0          0   Threshold APIC interrupts
>  MCE:          0          0          0          0          0          0          0          0   Machine check exceptions
>  MCP:       2591       2591       2591       2591       2591       2591       2591       2591   Machine check polls
>  ERR:          7
>  MIS:          0
> 
> But I do not see the Adaptec card (yes with lspci):
> 
> 04:04.0 SCSI storage controller: Adaptec ASC-29320ALP U320 (rev ff)

We are coming closer...
With 'lspci -v -s04:04.0' you will see the IRQ your Adaptec controller
is assigned to.

http://www.linux.org/docs/ldp/howto/Plug-and-Play-HOWTO-7.html gives
more information about interrupts in general.
You may check your BIOS for means to assign interrupts to certain
slots. Moving either your SCSI controller or the other conflicting
card to another slot might help. 
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux