Hi guys,
I have a bunch of onboard USB controllers that I need to passthrough to
different PV domUs:
home-xen:~# lspci | grep -i usb
00:12.0 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI0
Controller
00:12.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller
00:13.0 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI0
Controller
00:13.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller
00:14.5 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI2
Controller
00:16.0 USB Controller: ATI Technologies Inc SB700/SB800 USB OHCI0
Controller
00:16.2 USB Controller: ATI Technologies Inc SB700/SB800 USB EHCI Controller
04:00.0 USB Controller: NEC Corporation uPD720200 USB 3.0 Host
Controller (rev 03)
05:05.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1
Controller (rev 61)
05:05.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1
Controller (rev 61)
05:05.2 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 63)
Unluckily, the kernel seems to squeeze them on the same IRQ:
home-xen:~# cat /proc/interrupts
CPU0 CPU1
1: 410 0 xen-pirq-ioapic-edge i8042
8: 0 0 xen-pirq-ioapic-edge rtc0
9: 1 0 xen-pirq-ioapic-edge acpi
17: 4990 0 xen-pirq-ioapic-level pata_via, HDA
Intel, pciback[0000:00:13.2], pciback[0000:00:12.2]
* 18: 976 0 xen-pirq-ioapic-level
pciback[0000:00:13.0], pciback[0000:00:12.0], pciback[0000:01:05.0]*
1230: 7 0 xen-dyn-event storage0
1231: 936 0 xen-dyn-event blkif-backend
1232: 28 0 xen-dyn-event blkif-backend
1233: 9464 0 xen-dyn-event blkif-backend
1234: 181 0 xen-dyn-event evtchn:xenconsoled
1235: 269 0 xen-dyn-event evtchn:xenstored
1236: 22 0 xen-dyn-event blkif-backend
1237: 10359 0 xen-dyn-event blkif-backend
1238: 194 0 xen-dyn-event pciback
1239: 142 0 xen-dyn-event evtchn:xenconsoled
1240: 291 0 xen-dyn-event evtchn:xenstored
1247: 2 0 xen-dyn-event evtchn:xenstored
1248: 3665 0 xen-dyn-event evtchn:xenstored
1249: 21362 0 xen-pirq-msi eth0
1250: 95630 0 xen-pirq-msi ahci
1252: 0 0 xen-dyn-virq mce
1258: 0 0 xen-dyn-virq pcpu
1259: 6075 0 xen-dyn-event xenbus
1263: 12167 0 xen-dyn-event ady0
1264: 152 0 xen-dyn-event blkif-backend
1265: 7590 0 xen-dyn-event blkif-backend
1266: 505 0 xen-dyn-event pciback
1267: 230 0 xen-dyn-event evtchn:xenconsoled
1268: 345 0 xen-dyn-event evtchn:xenstored
1269: 51 0 xen-dyn-event atlas0
1270: 0 5084 xen-dyn-ipi callfuncsingle1
1271: 0 0 xen-dyn-virq debug1
1272: 0 119 xen-dyn-ipi callfunc1
1273: 0 33631 xen-dyn-ipi resched1
1274: 0 124343 xen-dyn-virq timer1
1275: 527 0 xen-dyn-ipi callfuncsingle0
1276: 0 0 xen-dyn-virq debug0
1277: 16 0 xen-dyn-ipi callfunc0
1278: 13347 0 xen-dyn-ipi resched0
1279: 130062 0 xen-dyn-virq timer0
NMI: 0 0 Non-maskable interrupts
LOC: 0 0 Local timer interrupts
SPU: 0 0 Spurious interrupts
PMI: 0 0 Performance monitoring interrupts
PND: 0 0 Performance pending work
RES: 13347 33631 Rescheduling interrupts
CAL: 543 5203 Function call interrupts
TLB: 0 0 TLB shootdowns
TRM: 0 0 Thermal event interrupts
THR: 0 0 Threshold APIC interrupts
MCE: 0 0 Machine check exceptions
MCP: 2 2 Machine check polls
ERR: 0
MIS: 0
This is causing an "Interrupt 18 disabled" sort of message on the
console of random (?) domUs and the entire server is slowly locking. I
suspect the sata controller is filling up.
I am using Debian Squeeze:
home-xen:~# cat /etc/debian_version
squeeze/sid
home-xen:~# uname -a
Linux home-xen 2.6.32-5-xen-amd64 #1 SMP Tue Jun 1 06:38:33 UTC 2010
x86_64 GNU/Linux
home-xen:~# xm info
host : home-xen
release : 2.6.32-5-xen-amd64
version : #1 SMP Tue Jun 1 06:38:33 UTC 2010
machine : x86_64
nr_cpus : 4
nr_nodes : 1
cores_per_socket : 4
threads_per_core : 1
cpu_mhz : 2611
hw_caps :
178bf3ff:efd3fbff:00000000:00001310:00802001:00000000:000037ff:00000000
virt_caps : hvm
total_memory : 4094
free_memory : 1107
node_to_cpu : node0:0-3
node_to_memory : node0:1107
node_to_dma32_mem : node0:1041
max_node_id : 0
xen_major : 4
xen_minor : 0
xen_extra : .1-rc3
xen_caps : xen-3.0-x86_64 xen-3.0-x86_32p hvm-3.0-x86_32
hvm-3.0-x86_32p hvm-3.0-x86_64
xen_scheduler : credit
xen_pagesize : 4096
platform_params : virt_start=0xffff800000000000
xen_changeset : unavailable
xen_commandline : dom0_mem=262144 hap sched=credit vga=current
cpufreq=xen
cc_compiler : gcc version 4.4.4 (Debian 4.4.4-5)
cc_compile_by : waldi
cc_compile_domain : debian.org
cc_compile_date : Wed Jun 30 14:32:51 UTC 2010
xend_config_format : 4
Have you met something similar? I've found statements of people having
issues with shared IRQs spread among different domUs, but they simply
put the cards into different slots, while I can't do that due to the
fact these are onboard.
I've tried messing with the latest 2.6.33.x stable xen pv_ops kernel
from Jeremy's repository, but it's not really working. Actually, I need
the ATI's Evergreen drivers and looks like Debian has backported them.
I've tried patching the kernel with some patches found in their
repositories just for ATI's Evergreen, but still not working. :(
Any ideas on how to assign different IRQs to some devices? Maybe trying
to group them on the same different IRQ for each domU?
Thanks bunch!
--
Deac Mihai-Adrian
_______________________________________________
Xen-users mailing list
Xen-users@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-users
|