[Fedora-xen] DMA errors passing onboard USB controller to Guest domain

Steven Haigh netwiz at crc.id.au
Sun Dec 24 08:10:55 UTC 2006


Hi all,

I've got a P4 3Ghz doing 3 paravirtualised guests running various  
software, however it seems that if I use pciback to pass the onboard  
USB controller to a guest, after a while of use, the host starts  
getting DMA read errors on the local hard disk.

The error I get is:
hda: DMA interrupt recovery
hda: lost interrupt
hda: dma_timer_expiry: dma status == 0x24

When this happens, all the xen guest domains and the host seem to  
hang. Only a reboot via the reset button can bring the system back...

When I am not using the xen guest to stream media over the USB port  
(it's a USB HDTV tuner), everything works fine.

I pass things to pciback using the following in /etc/rc.d/rc.local:
for SLOT in "0000:00:1d.0" "0000:00:1d.1" "0000:00:1d.2" "0000:00:1d. 
3" "0000:00:1d.7" "0000:03:03.0" "0000:03:04.0" "0000:03:01.0"  
"0000:03:01.1" "0000:03:01.2"; do
   # Add a new slot to the PCI Backend's list
   echo -n $SLOT > /sys/bus/pci/drivers/pciback/new_slot
   # Now that the backend is watching for the slot, bind to it
   echo -n $SLOT > /sys/bus/pci/drivers/pciback/bind
done

# lspci
00:00.0 Host bridge: Intel Corporation 82865G/PE/P DRAM Controller/ 
Host-Hub Interface (rev 02)
00:01.0 PCI bridge: Intel Corporation 82865G/PE/P PCI to AGP  
Controller (rev 02)
00:03.0 PCI bridge: Intel Corporation 82865G/PE/P PCI to CSA Bridge  
(rev 02)
00:1d.0 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB  
UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB  
UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB  
UHCI Controller #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R) USB  
UHCI Controller #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801EB/ER (ICH5/ICH5R)  
USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev c2)
00:1f.0 ISA bridge: Intel Corporation 82801EB/ER (ICH5/ICH5R) LPC  
Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801EB/ER (ICH5/ICH5R) IDE  
Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801EB/ER (ICH5/ICH5R) SMBus  
Controller (rev 02)
01:00.0 VGA compatible controller: nVidia Corporation NV11DDR  
[GeForce2 MX 100 DDR/200 DDR] (rev b2)
02:01.0 Ethernet controller: Intel Corporation 82547EI Gigabit  
Ethernet Controller
03:00.0 SCSI storage controller: Advanced System Products, Inc ABP940- 
U / ABP960-U (rev 03)
03:01.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1  
Controller (rev 50)
03:01.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1  
Controller (rev 50)
03:01.2 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 51)
03:03.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97]  
(rev 06)
03:04.0 Network controller: Tiger Jet Network Inc. Tiger3XX Modem/ 
ISDN interface

# lspci -n
00:00.0 0600: 8086:2570 (rev 02)
00:01.0 0604: 8086:2571 (rev 02)
00:03.0 0604: 8086:2573 (rev 02)
00:1d.0 0c03: 8086:24d2 (rev 02)
00:1d.1 0c03: 8086:24d4 (rev 02)
00:1d.2 0c03: 8086:24d7 (rev 02)
00:1d.3 0c03: 8086:24de (rev 02)
00:1d.7 0c03: 8086:24dd (rev 02)
00:1e.0 0604: 8086:244e (rev c2)
00:1f.0 0601: 8086:24d0 (rev 02)
00:1f.1 0101: 8086:24db (rev 02)
00:1f.3 0c05: 8086:24d3 (rev 02)
01:00.0 0300: 10de:0111 (rev b2)
02:01.0 0200: 8086:1019
03:00.0 0100: 10cd:1300 (rev 03)
03:01.0 0c03: 1106:3038 (rev 50)
03:01.1 0c03: 1106:3038 (rev 50)
03:01.2 0c03: 1106:3104 (rev 51)
03:03.0 0401: 1274:1371 (rev 06)
03:04.0 0280: e159:0001

# cat /etc/xen/xend-pci-permissive.sxp
(unconstrained_dev_ids
      (  'e159:0001'                             ### TDM400P for  
domain: Asterisk
         '1274:1371'                             ### PCI Sound card  
for domain: Scanner
         '1106:3038' '1106:3038' '1106:3104'     ### USB2 card for  
domain: Scanner
         '8086:24d2' '8086:24d4' '8086:24d7' '8086:24de' '8086:24dd'  
### Onboard USB controllers for domain: dvb
      )
)

# cat /etc/xen/dvb
# Automatically generated xen config file
name = "dvb"
memory = "256"
disk = [ 'tap:aio:/home/virtuals/dvb/dvb.root.img,xvda,w', ]
vif = [ 'mac=00:16:3e:6c:d3:4b, bridge=xenbr0', ]
nographic=1
uuid = "d3d2eb8a-a2b0-e67c-d65a-52b768de25a6"
bootloader="/usr/bin/pygrub"
vcpus=2
pci = [ '0,1d,0' , '0,1d,1' , '0,01d,2' , '0,1d,3' , '0,1d,7' ]
on_reboot   = 'restart'
on_crash    = 'restart'

Anybody have any ideas on this?

-- 
Steven Haigh

Email: netwiz at crc.id.au
Web: http://www.crc.id.au
Phone: (03) 9017 0597 - 0412 935 897






More information about the Fedora-xen mailing list