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