From mboxrd@z Thu Jan 1 00:00:00 1970 From: Erik Brakkee Subject: PCI passthrough on Sony Vaio F11 laptop... Date: Sat, 13 Nov 2010 00:31:12 +0100 Message-ID: <4CDDCE40.9050001@brakkee.org> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit To: kvm@vger.kernel.org Return-path: Received: from cpsmtp-fia03.kpnxchange.com ([195.121.247.6]:2527 "EHLO cpsmtp-fia03.kpnxchange.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932303Ab0KLXpT (ORCPT ); Fri, 12 Nov 2010 18:45:19 -0500 Received: from [192.168.2.3] (pelican.lan [192.168.2.3]) by brakkee.org (Postfix) with ESMTP id 8F61761887 for ; Sat, 13 Nov 2010 00:31:12 +0100 (CET) Sender: kvm-owner@vger.kernel.org List-ID: Hi all, I have KVM running successfully on opensuse 11.3 (64bit) with a opensuse 11.1 guest. I am using hardware virtualization and want to experiment with PCI passthrough with the (wired) network card on my laptop because I want to repeat similar steps later on a server (with a TV card). The main specs of the laptop are Intel Core I7 Q720 1.6GHz with 8MB of memory. I have followed the instructions on http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization/chap-Virtualization-PCI_passthrough.html. Everything is successful until I start the domain. In that case I get the following messages in the logs: Nov 13 00:23:45 pelican kernel: [ 3302.793043] pci-stub 0000:04:00.0: claimed by stub Nov 13 00:23:45 pelican kernel: [ 3302.793197] pci-stub 0000:04:00.0: claimed by stub Nov 13 00:23:45 pelican kernel: [ 3302.931578] kvm_vm_ioctl_deassign_device: device hasn't been assigned before, so cannot be deassigned Nov 13 00:23:48 pelican libvirtd: 00:23:48.136: error : qemuMonitorOpenUnix:269 : monitor socket did not show up.: Connection refused Nov 13 00:23:48 pelican libvirtd: 00:23:48.136: error : qemuConnectMonitor:1192 : Failed to connect monitor for other To be absolutely certa CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 0: 371 0 0 203026 0 0 0 0 IO-APIC-edge timer 1: 12870 0 0 39 173 0 0 0 IO-APIC-edge i8042 7: 259 0 0 0 0 0 0 0 IO-APIC-edge 8: 0 0 0 4 0 0 0 0 IO-APIC-edge rtc0 9: 2823 0 0 141 0 0 0 0 IO-APIC-fasteoi acpi 12: 15 0 0 155 0 0 0 0 IO-APIC-edge i8042 16: 0 298817 0 0 0 0 634 0 IO-APIC-fasteoi ehci_hcd:usb1, ohci1394, hda_intel, nvidia 17: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi mmc0 19: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi mmc1 23: 0 0 99 0 0 95116 0 0 IO-APIC-fasteoi ehci_hcd:usb2 24: 687633 0 0 0 0 0 0 0 HPET_MSI-edge hpet2 25: 0 637204 0 0 0 0 0 0 HPET_MSI-edge hpet3 26: 0 0 199161 0 0 0 0 0 HPET_MSI-edge hpet4 27: 0 0 0 134606 0 0 0 0 HPET_MSI-edge hpet5 28: 0 0 0 0 237717 0 0 0 HPET_MSI-edge hpet6 34: 58784 0 0 7780 0 0 0 0 PCI-MSI-edge ahci 36: 939 0 0 0 138686 0 0 0 PCI-MSI-edge iwlagn 37: 0 0 0 0 0 210 0 0 PCI-MSI-edge hda_intel NMI: 0 0 0 0 0 0 0 0 Non-maskable interrupts LOC: 1535 1438 1347 1257 1168 396803 120435 79080 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: 4164 4332 2050 1413 3244 2790 1630 1200 Rescheduling interrupts CAL: 1394 1395 1279 1195 1431 1430 1429 575 Function call interrupts TLB: 5007 2623 3751 3045 5617 3902 4486 4115 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: 14 14 14 14 14 14 14 14 Machine check polls ERR: 259 MIS: 0 in I also removed the driver for the network card using 'rmmod sky2'. I have also specified the intel_iommu=on option in the command line (cat /proc/cmdline gives: root=/dev/system/root resume=/dev/system/swap splash=silent quiet nomodeset intel_iommu=on vga=0x314). Also, the output of 'dmesg | grep -i iommu' gives: [ 0.000000] Command line: root=/dev/system/root resume=/dev/system/swap splash=silent quiet nomodeset intel_iommu=on vga=0x314 [ 0.000000] Kernel command line: root=/dev/system/root resume=/dev/system/swap splash=silent quiet nomodeset intel_iommu=on vga=0x314 [ 0.000000] Intel-IOMMU: enabled So it seems that IOMMU is available. I read somewhere that there could be a problem in the interrupts and some users had success by disabling them but I really don't know how to debug this. The output of 'cat /proc/interrupts' is as follows: CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 0: 371 0 0 203026 0 0 0 0 IO-APIC-edge timer 1: 12870 0 0 39 173 0 0 0 IO-APIC-edge i8042 7: 259 0 0 0 0 0 0 0 IO-APIC-edge 8: 0 0 0 4 0 0 0 0 IO-APIC-edge rtc0 9: 2823 0 0 141 0 0 0 0 IO-APIC-fasteoi acpi 12: 15 0 0 155 0 0 0 0 IO-APIC-edge i8042 16: 0 298817 0 0 0 0 634 0 IO-APIC-fasteoi ehci_hcd:usb1, ohci1394, hda_intel, nvidia 17: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi mmc0 19: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi mmc1 23: 0 0 99 0 0 95116 0 0 IO-APIC-fasteoi ehci_hcd:usb2 24: 687633 0 0 0 0 0 0 0 HPET_MSI-edge hpet2 25: 0 637204 0 0 0 0 0 0 HPET_MSI-edge hpet3 26: 0 0 199161 0 0 0 0 0 HPET_MSI-edge hpet4 27: 0 0 0 134606 0 0 0 0 HPET_MSI-edge hpet5 28: 0 0 0 0 237717 0 0 0 HPET_MSI-edge hpet6 34: 58784 0 0 7780 0 0 0 0 PCI-MSI-edge ahci 36: 939 0 0 0 138686 0 0 0 PCI-MSI-edge iwlagn 37: 0 0 0 0 0 210 0 0 PCI-MSI-edge hda_intel NMI: 0 0 0 0 0 0 0 0 Non-maskable interrupts LOC: 1535 1438 1347 1257 1168 396803 120435 79080 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: 4164 4332 2050 1413 3244 2790 1630 1200 Rescheduling interrupts CAL: 1394 1395 1279 1195 1431 1430 1429 575 Function call interrupts TLB: 5007 2623 3751 3045 5617 3902 4486 4115 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: 14 14 14 14 14 14 14 14 Machine check polls ERR: 259 MIS: 0 Do you have any suggestions on how to solve/debug this problem? Cheers Erik -- Nonsense and other useful things: http://brakkee.org MountainHoppers: http://mountainhoppers.nl Track Detective: http://trackdetective.com Twitter: http://twitter.com/ErikBrakkee