[mythtv-users] Trying to setup KVM virtual backend with kvr-4000 tuner
Ole Nissen
mail at olenissen.com
Thu Aug 19 05:47:38 UTC 2010
Hi All.
I was wondering if anyone has gotten this setup to work, if so PLEASE HELP!.
Im getting errrors when trying to feed the HVR-4000 PCI card to the mythtv
guest system.
Here are my logs:
dmesg | grep IOMMU:
[ 0.000000] Intel-IOMMU: disable GFX device mapping
[ 0.028479] IOMMU fed90000: ver 1:0 cap c9008020e30272 ecap 1000
[ 0.028486] IOMMU fed91000: ver 1:0 cap c0000020630272 ecap 1000
[ 0.028492] IOMMU fed92000: ver 1:0 cap c0000020630272 ecap 1000
[ 0.028497] IOMMU fed93000: ver 1:0 cap c9008020630272 ecap 1000
[ 0.342618] IOMMU 0xfed92000: using Register based invalidation
[ 0.342620] IOMMU 0xfed90000: using Register based invalidation
[ 0.342621] IOMMU 0xfed93000: using Register based invalidation
[ 0.342625] IOMMU: Setting RMRR:
[ 0.342635] IOMMU: Setting identity map for device 0000:00:1d.0
[0xcdbf0000 - 0xcdc00000]
[ 0.342660] IOMMU: Setting identity map for device 0000:00:1d.1
[0xcdbf0000 - 0xcdc00000]
[ 0.342683] IOMMU: Setting identity map for device 0000:00:1d.2
[0xcdbf0000 - 0xcdc00000]
[ 0.342702] IOMMU: Setting identity map for device 0000:00:1d.7
[0xcdbf0000 - 0xcdc00000]
[ 0.342721] IOMMU: Setting identity map for device 0000:00:1a.0
[0xcdbf0000 - 0xcdc00000]
[ 0.342741] IOMMU: Setting identity map for device 0000:00:1a.1
[0xcdbf0000 - 0xcdc00000]
[ 0.342762] IOMMU: Setting identity map for device 0000:00:1a.2
[0xcdbf0000 - 0xcdc00000]
[ 0.342782] IOMMU: Setting identity map for device 0000:00:1a.7
[0xcdbf0000 - 0xcdc00000]
[ 0.342796] IOMMU: Prepare 0-16MiB unity mapping for LPC
[ 0.342804] IOMMU: Setting identity map for device 0000:00:1f.0 [0x0 -
0x1000000]
dmesg | grep DMAR
[ 0.000000] ACPI: DMAR 00000000cdbe9b00 00120 (v01 IntelR AWRDACPI
322E3030 DRWA 00000002)
[ 0.028472] DMAR: Host address width 36
[ 0.028474] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.028481] DMAR: DRHD base: 0x000000fed91000 flags: 0x0
[ 0.028488] DMAR: DRHD base: 0x000000fed92000 flags: 0x0
[ 0.028494] DMAR: DRHD base: 0x000000fed93000 flags: 0x1
[ 0.028499] DMAR: RMRR base: 0x000000cdbf0000 end: 0x000000cdbfffff
[ 0.028501] DMAR: RMRR base: 0x000000cdd00000 end: 0x000000cfffffff
This should be fine I think. The system should be ready for PCI Passthrough.
This is my /proc/interrupts:
CPU0 CPU1
0: 26 1 IO-APIC-edge timer
1: 2 0 IO-APIC-edge i8042
6: 1 2 IO-APIC-edge floppy
8: 1 0 IO-APIC-edge rtc0
9: 0 0 IO-APIC-fasteoi acpi
16: 31 30 IO-APIC-fasteoi uhci_hcd:usb3, pata_jmicron
18: 1 1 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb5,
uhci_hcd:usb8
19: 1258 3001 IO-APIC-fasteoi ata_piix, ata_piix,
uhci_hcd:usb7, eth1
21: 113 103 IO-APIC-fasteoi uhci_hcd:usb4
22: 73 73 IO-APIC-fasteoi HDA Intel
23: 0 0 IO-APIC-fasteoi ehci_hcd:usb2, uhci_hcd:usb6
24: 8935 0 HPET_MSI-edge hpet2
25: 0 6991 HPET_MSI-edge hpet3
28: 0 0 DMAR_MSI-edge dmar2
29: 0 0 DMAR_MSI-edge dmar0
30: 0 0 DMAR_MSI-edge dmar3
32: 6244 17 PCI-MSI-edge i915
NMI: 0 0 Non-maskable interrupts
LOC: 21 4 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 0 0 Performance monitoring interrupts
PND: 0 0 Performance pending work
RES: 62816 62240 Rescheduling interrupts
CAL: 22 64 Function call interrupts
TLB: 6506 6429 TLB shootdowns
TRM: 0 0 Thermal event interrupts
THR: 0 0 Threshold APIC interrupts
MCE: 0 0 Machine check exceptions
MCP: 3 3 Machine check polls
ERR: 1
MIS: 0
As you can see, nothing on IRQ 12. It is not shown because none of the tuner
modules are loaded. It uses IRQ 12, see below:
02:00.0 Multimedia video controller: Conexant Systems, Inc. CX23880/1/2/3
PCI Video and Audio Decoder (rev 05)
Subsystem: Hauppauge computer works Inc. Device 6902
Flags: bus master, medium devsel, latency 32, IRQ 12
Memory at f1000000 (32-bit, non-prefetchable) [size=16M]
Capabilities: <access denied>
Kernel modules: cx8800
02:00.1 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI
Video and Audio Decoder [Audio Port] (rev 05)
Subsystem: Hauppauge computer works Inc. Device 6902
Flags: bus master, medium devsel, latency 32, IRQ 12
Memory at f2000000 (32-bit, non-prefetchable) [size=16M]
Capabilities: <access denied>
Kernel modules: cx88-alsa
02:00.2 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI
Video and Audio Decoder [MPEG Port] (rev 05)
Subsystem: Hauppauge computer works Inc. Device 6902
Flags: bus master, medium devsel, latency 32, IRQ 12
Memory at f3000000 (32-bit, non-prefetchable) [size=16M]
Capabilities: <access denied>
Kernel modules: cx8802
02:00.4 Multimedia controller: Conexant Systems, Inc. CX23880/1/2/3 PCI
Video and Audio Decoder [IR Port] (rev 05)
Subsystem: Hauppauge computer works Inc. Device 6902
Flags: bus master, medium devsel, latency 32, IRQ 12
Memory at f4000000 (32-bit, non-prefetchable) [size=16M]
Capabilities: <access denied>
When the modules were loaded for the card, the card was given IRQ 20, and
this was what it showed:
PCI INT A -> GSI 20 (level, low) -> IRQ 20
This makes me wonder, if its the PCI INT A, that cant be shared? When I run
a dmesg | grep "INT A" now i get:
[ 0.337870] pci 0000:00:1c.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 0.358063] pata_acpi 0000:01:00.0: PCI INT A -> GSI 16 (level, low) ->
IRQ 16
[ 0.358086] pata_acpi 0000:01:00.0: PCI INT A disabled
[ 0.380221] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) ->
IRQ 23
[ 0.400228] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) ->
IRQ 16
[ 0.400742] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) ->
IRQ 23
[ 7.898290] r8169 0000:02:01.0: PCI INT A -> GSI 19 (level, low) -> IRQ
19
[ 7.951792] pata_jmicron 0000:01:00.0: PCI INT A -> GSI 16 (level, low)
-> IRQ 16
[ 7.975156] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[ 8.252234] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) ->
IRQ 22
There is a lot of PCI INT A's, and if its them that cant be shared im lost!
The GSI 12 or GSI 20 is not used, so this is not a issue.
The last thing to show is the lspci -t:
-[0000:00]-+-00.0
+-02.0
+-02.1
+-03.0
+-03.2
+-03.3
+-1a.0
+-1a.1
+-1a.2
+-1a.7
+-1b.0
+-1c.0-[0000:01]----00.0
+-1d.0
+-1d.1
+-1d.2
+-1d.7
+-1e.0-[0000:02]--+-00.0
| +-00.1
| +-00.2
| +-00.4
| \-01.0
+-1f.0
+-1f.2
+-1f.3
\-1f.5
I dont know how to read this log?
However when I then do the kvm stuff:
lspci -n
02:00.0 0400: 14f1:8800 (rev 05)
02:00.1 0480: 14f1:8811 (rev 05)
02:00.2 0480: 14f1:8802 (rev 05)
02:00.4 0480: 14f1:8804 (rev 05)
echo "14f1 8800" > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:02:00.0 > /sys/bus/pci/devices/0000:02:00.0/driver/unbind
echo 0000:02:00.0 > /sys/bus/pci/drivers/pci-stub/bind
echo "14f1 8811" > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:02:00.1 > /sys/bus/pci/devices/0000:02:00.1/driver/unbind
echo 0000:02:00.1 > /sys/bus/pci/drivers/pci-stub/bind
echo "14f1 8802" > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:02:00.2 > /sys/bus/pci/devices/0000:02:00.2/driver/unbind
echo 0000:02:00.2 > /sys/bus/pci/drivers/pci-stub/bind
echo "14f1 8804" > /sys/bus/pci/drivers/pci-stub/new_id
echo 0000:02:00.4 > /sys/bus/pci/devices/0000:02:00.4/driver/unbind
echo 0000:02:00.4 > /sys/bus/pci/drivers/pci-stub/bind
, this is the dmesg right after:
[ 1113.446450] pci-stub 0000:02:00.0: claimed by stub
[ 1113.446652] pci-stub 0000:02:00.0: claimed by stub
[ 1113.446740] pci-stub 0000:02:00.1: claimed by stub
[ 1113.446912] pci-stub 0000:02:00.1: claimed by stub
[ 1113.446997] pci-stub 0000:02:00.2: claimed by stub
[ 1113.447168] pci-stub 0000:02:00.2: claimed by stub
[ 1113.447254] pci-stub 0000:02:00.4: claimed by stub
[ 1113.447429] pci-stub 0000:02:00.4: claimed by stub
Every thing seems fine I think.
However, now only thing left is to start the virtual mythbuntu with the pci
card attached:
sudo qemu-system-x86_64 -m 512 -boot c -net none -hda
/home/administrator/VirtualMachines/mythbuntu.img -pcidevice host=02:00.0
-pcidevice host=02:00.1 -pcidevice host=02:00.2 -pcidevice host=02:00.4
This starts the up the machine, but in the terminal this error appears a
lot of times:
Failed to assign irq for "02:00.2": Input/output error
Perhaps you are assigning a device that shares an IRQ with another device?
Failed to assign irq for "02:00.1": Input/output error
Perhaps you are assigning a device that shares an IRQ with another device?
Failed to assign irq for "02:00.0": Input/output error
Perhaps you are assigning a device that shares an IRQ with another device?
What I dont understand is why is this error happening, because I dont think
the IRQ is shared, but I honestly dont know...
Can someone see any problems from what I posted????
Regards
Ole
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mythtv.org/pipermail/mythtv-users/attachments/20100819/72fa6910/attachment.htm>
More information about the mythtv-users
mailing list