Steven Haigh
2006-Dec-24  08:10 UTC
[Fedora-xen] DMA errors passing onboard USB controller to Guest domain
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@crc.id.au
Web: http://www.crc.id.au
Phone: (03) 9017 0597 - 0412 935 897