[CentOS-virt] Kernel panic in DomU when using swiotlb=force option

Tue Jan 29 04:07:32 UTC 2008
Michael Olson <olson at irinim.net>

I'm trying to get a PVR-150 PCI card imported into a Xen DomU, however 
the driver blows up the kernel when loaded. The work around for this 
mentioned in various places is to use swiotlb=force on the DomU kernel. 
That leads to a fast and furious kernel panic. I've tried this with all 
Dom0 & DomU running kernel-xen-2.6.18-53.el5
kernel-xen-2.6.18-53.1.6.el5, bot x86 and 86_64 versions, also tried 
iommu=soft and various sizing options with swiotbl. Any ideas on how to 
fix or work-around this?

Thanks

-- Michael

Kernel splat:
-------------------------------------------------------
[root at hydra mythic]# xm create mythic -c
Using config file "./mythic".
Started domain mythic
Bootdata ok (command line is  ro root=LABEL=/1 swiotlb=force)
Linux version 2.6.18-53.1.6.el5xen (mockbuild at builder6.centos.org) (gcc 
version 4.1.2 20070626 (Red Hat 4.1.2-14)) #1 SMP Wed Jan 23 11:59:21 
EST 2008
BIOS-provided physical RAM map:
 Xen: 0000000000000000 - 0000000030800000 (usable)
No mptable found.
Built 1 zonelists.  Total pages: 198656
Kernel command line:  ro root=LABEL=/1 swiotlb=force
Initializing CPU#0
PID hash table entries: 4096 (order: 12, 32768 bytes)
Xen reported: 2400.082 MHz processor.
Console: colour dummy device 80x25
Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
Inode-cache hash table entries: 65536 (order: 7, 524288 bytes)
----------- [cut here ] --------- [please bite here ] ---------
Kernel BUG at lib/../arch/i386/kernel/swiotlb.c:160
invalid opcode: 0000 [1] SMP
last sysfs file:
CPU 0
Modules linked in:
Pid: 0, comm: swapper Not tainted 2.6.18-53.1.6.el5xen #1
RIP: e030:[<ffffffff80334da7>]  [<ffffffff80334da7>] 
swiotlb_init_with_default_size+0xa0/0x19e
RSP: e02b:ffffffff805d9f40  EFLAGS: 00010282
RAX: 00000000fffffff4 RBX: 0000000000000000 RCX: 0000000000063906
RDX: ffffffffff578000 RSI: 0000000000000000 RDI: 0000000000000000
RBP: 0000000004000000 R08: 0000000000001000 R09: ffffffff806399e0
R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
FS:  0000000000000000(0000) GS:ffffffff80599000(0000) knlGS:0000000000000000
CS:  e033 DS: 0000 ES: 0000
Process swapper (pid: 0, threadinfo ffffffff805d8000, task ffffffff804c4a00)
Stack:  0000000000000295  0000000000020800  0000000000000000  
ffffffff80273167
 0000000000000000  ffffffff805ec50a  0000000000000000  0000000000020800
 0000000000000000  0000000000000000
Call Trace:
 [<ffffffff80273167>] pci_swiotlb_init+0x9/0x2d
 [<ffffffff805ec50a>] mem_init+0x5e/0x233
 [<ffffffff805e2a7a>] start_kernel+0x189/0x224
 [<ffffffff805e21ed>] _sinittext+0x1ed/0x1f3


Code: 0f 0b 68 1b e1 47 80 c2 a0 00 48 83 eb 80 48 8b 05 4c ca 33
RIP  [<ffffffff80334da7>] swiotlb_init_with_default_size+0xa0/0x19e
 RSP <ffffffff805d9f40>
 <0>Kernel panic - not syncing: Fatal exception
-------------------------------------------------------