[CentOS-virt] PCI passthrough problems

Tue Sep 23 03:22:42 UTC 2008
Enderson Maia <endersonmaia at gmail.com>

Hello,

I'm having a problem, I've seen other people with the same problem,
but with USB.

Some people solved this with the pciback.permissive option, but in my
case it's ignored.

I'm using CentOS 5.2 - 2.6.18-92.1.10.el5.centos.plusxen

The error return from the console starting the domU is below.

I've tried swiotlb=force, pciback.permissive like I said.

My configs are:

 /etc/modprobe.conf
...
options pciback hide=(03:01.0)

# cat /etc/xen//firewall
name = "firewall"
uuid = "cd5f6ad8-0682-73fd-3268-fb4a7b85c0ec"
maxmem = 256
memory = 256
vcpus = 1
bootloader = "/usr/bin/pygrub"
boot = "swiotlb=force"
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
vfb = [ "type=vnc,vncunused=1" ]
disk = [ "phy:/dev/VolGroup00/firewall.disk,xvda,w" ]
vif = [ "mac=00:16:3e:0e:53:5a,bridge=virbr0" ]
pci = [ '0000:03:01.0' ]

# rpm -qa | grep xen
xen-libs-3.0.3-64.el5_2.1
xen-3.0.3-64.el5_2.1
kernel-xen-2.6.18-92.el5
kernel-xen-2.6.18-92.1.10.el5.centos.plus

---
Iniciando interface eth0:  [  OK  ]
Iniciando interface eth1:
Determinando informação IP para o eth1...Fatal DMA error! Please use
'swiotlb=force'
------------[ cut here ]------------
kernel BUG at arch/i386/kernel/pci-dma-xen.c:401!
invalid opcode: 0000 [#1]
SMP
last sysfs file: /class/net/eth1/address
Modules linked in: xennet ip_conntrack_netbios_ns ipt_REJECT xt_state
ip_conntrack nfnetlink iptable_filter ip_tables ip6t_REJECT xt_tcpudp
ip6table_filter ip6_tables x_tables ipv6 xfrm_nalgo crypto_api
dm_mirror dm_multipath dm_mod parport_pc lp parport 3c59x pcspkr mii
xenblk ext3 jbd uhci_hcd ohci_hcd ehci_hcd
CPU:    0
EIP:    0061:[<c040a39c>]    Not tainted VLI
EFLAGS: 00010292   (2.6.18-92.el5xen #1)
EIP is at dma_map_single+0x12d/0x147
eax: 0000002f   ebx: 00000000   ecx: 00000001   edx: f5416000
esi: 38f59e02   edi: 00000001   ebp: 0000004e   esp: c071bdbc
ds: 007b   es: 007b   ss: 0069
Process swapper (pid: 0, ti=c071b000 task=c066e2c0 task.ti=c06e6000)
Stack: c0621abd c07fc448 008a8e02 00000000 cf914400 cf5db200 c07fc448 00000140
       d1232e6e 00000001 c08a8e02 cf914000 cf88c200 00000002 cf5db200 0000004e
       d126c000 cf914000 0000004e c08a8e02 cf88c140 cf88c140 cf88c200 c07c4c88
Call Trace:
 [<d1232e6e>] boomerang_start_xmit+0x141/0x352 [3c59x]
 [<c05aec59>] dev_hard_start_xmit+0x198/0x1ee
 [<c05bcaf6>] __qdisc_run+0xe4/0x19a
 [<c05b0544>] dev_queue_xmit+0x1e0/0x2e8
 [<c05b4b24>] neigh_resolve_output+0x1b2/0x1dc
 [<d136eb2e>] ip6_output2+0x256/0x2a7 [ipv6]
 [<d136f656>] ip6_output+0x9c7/0x9f3 [ipv6]
 [<d137c8c0>] dst_output+0x0/0x7 [ipv6]
 [<c05c3d12>] nf_hook_slow+0x3a/0x90
 [<d137c8c0>] dst_output+0x0/0x7 [ipv6]
 [<d137e4d6>] ndisc_send_ns+0x3a8/0x47a [ipv6]
 [<c06090d8>] _spin_lock_irqsave+0x8/0x28
 [<c042914a>] lock_timer_base+0x15/0x2f
 [<d1375ddb>] addrconf_dad_timer+0xc3/0xdf [ipv6]
 [<c0434244>] hrtimer_run_queues+0x14b/0x163
 [<d1375d18>] addrconf_dad_timer+0x0/0xdf [ipv6]
 [<c0429600>] run_timer_softirq+0x101/0x15c
 [<c042613e>] __do_softirq+0x5e/0xc3
 [<c0406edf>] do_softirq+0x56/0xaf
 [<c0406e80>] do_IRQ+0xa5/0xae
 [<c0549913>] evtchn_do_upcall+0x64/0x9b
 [<c04055d9>] hypervisor_callback+0x3d/0x48
 [<c0408632>] raw_safe_halt+0x8c/0xaf
 [<c040321a>] xen_idle+0x22/0x2e
 [<c0403339>] cpu_idle+0x91/0xab
 [<c06eb9f5>] start_kernel+0x37a/0x381
 =======================
Code: c0 74 07 8b 08 8b 58 04 eb 05 83 c9 ff 31 db 89 da 89 c8 f7 d2
f7 d0 21 fa 21 f0 89 d1 09 c1 74 13 68 bd 1a 62 c0 e8 de 7b 01 00 <0f>
0b 91 01 9e 1a 62 c0 5d f0 83 04 24 00 83 c4 0c 89 f0 89 fa
EIP: [<c040a39c>] dma_map_single+0x12d/0x147 SS:ESP 0069:c071bdbc
 <0>Kernel panic - not syncing: Fatal exception in interrupt
---

If you need more information, just tell


-- 
Enderson Maia