[CentOS-virt] Can't get PCI card visible in guest

Fri Oct 24 23:58:38 UTC 2008
Kenneth Tanzer <ktanzer at desc.org>

I've got a Digium PCI telephone card that I'm trying to use with an 
AsteriskNow guest, on  a CentOS 5.2 host.  I've tried setting up the 
pciback stuff, and think I've done it right, but the card does not show 
up in the guest.  I'm obviously missing something, so any help 
(including ways to debug this!) would be greatly appreciated.

Here's some more info:

The guest is fully virtualized, so I'm assuming that nothing should need 
to be configured within the guest.

On the host, the card shows up as:

[root at xenhost bus]# lspci | grep Digium
07:01.0 Ethernet controller: Digium, Inc. Unknown device 8005 (rev 11)

I think the pciback is set up properly.  When I load the module, the 
/sys/bus/pci/drivers/pciback/ is created, and everything looks the way I 
think it should:

[root at xenhost pciback]# pwd ; cat slots ; file 0000\:07\:01.0

0000:07:01.0: symbolic link to 

This shows up in /var/log/messages:

Oct 24 16:34:58 xenhost kernel: pciback 0000:07:01.0: seizing device
Oct 24 16:34:58 xenhost kernel: PCI: Enabling device 0000:07:01.0 (0000 
-> 0003)
Oct 24 16:34:58 xenhost kernel: ACPI: PCI Interrupt 0000:07:01.0[A] -> 
GSI 24 (level, low) -> IRQ 20
Oct 24 16:34:58 xenhost kernel: ACPI: PCI interrupt for device 
0000:07:01.0 disabled

Here is my xen config file, with the PCI line at the end:

name = "asterisk_now"
uuid = "02f476ce-7a98-e58c-f715-0bb28a3c6c3d"
maxmem = 2048
memory = 1024
vcpus = 1
builder = "hvm"
kernel = "/usr/lib/xen/boot/hvmloader"
boot = "c"
pae = 1
acpi = 1
apic = 1
localtime = 0
on_poweroff = "destroy"
on_reboot = "restart"
on_crash = "restart"
device_model = "/usr/lib/xen/bin/qemu-dm"
sdl = 0
vnc = 1
vncunused = 1
keymap = "en-us"
disk = [ "phy:/dev/datafarm/asterisk_now,hda,w", ",hdc:cdrom,r" ]
vif = [ "mac=00:16:3e:6c:ae:c2,bridge=xenbr0" ]
serial = "pty"
pci = [ "07:01.00" ]

(In the scattered bits of documentation I've found on this topic, I've 
seen a couple of different formats for specifying the PCI, including 
"pci = [ "0000:07:01.00" ] and "7,1,0".  None of them seemed to work either.

My virtual AsteriskNow machine is not yet running (and I've tried 
restarting xend at this point), but when I start the machine, no card is 

[admin at 192-168-6-94 ~]$ lspci

00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE 
[Natoma/Triton II]
00:01.2 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 01)
00:01.3 USB Controller: Intel Corporation 82371SB PIIX3 USB 
[Natoma/Triton II] (rev 01)
00:02.0 VGA compatible controller: Cirrus Logic GD 5446
00:03.0 Class ff80: XenSource, Inc. Xen Platform Device (rev 01)
00:04.0 Ethernet controller: Realtek Semiconductor Co., Ltd. 
RTL-8139/8139C/8139C+ (rev 20)

Thanks in advance for any assistance!