[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] xen and pci



On Sat, 30 Oct 2004, Keir Fraser wrote:

*However* I think that pcmcia/cardbus bridges are safe to tell dom0 about (Xen cannot probe behind them) and they have a special subtype that we could detect. So we can rejig the test that hides the bridges to be a little bit smarter.

--- common/physdev.c    2004-10-22 11:51:50.918741798 +0100
+++ common-new/physdev.c        2004-10-30 08:40:33.513342843 +0100
@@ -747,7 +747,8 @@
         *
         * In Linux2.6 we set pcibios_scan_all_fns().
         */
-        if ( dev->hdr_type != PCI_HEADER_TYPE_NORMAL )
+        if ( (dev->hdr_type != PCI_HEADER_TYPE_NORMAL) &&
+             (dev->hdr_type != PCI_HEADER_TYPE_CARDBUS) )
            continue;
        pdev = xmalloc(sizeof(phys_dev_t));
        pdev->dev = dev;

The lack of pcmcia network was annoying me so I poked more around.

The above fix helps in that linux can find the cardbus bridge.

HOWEVER, once it finds it would like to configure devices behind this bridge, and it seems the xen prevents linux from doing just that.

It seems like linux treats the stuff it finds behind cardbus bridge like PCI device (i'm not sure if it is a real device or just how linux treats it a virtual pci devices).

thus for output of /sbin/lspci from linux classic we get

redbull:/usr/src/cm/xen # /sbin/lspci

0000:00:00.0 Host bridge: Intel Corp. 82830 830 Chipset Host Bridge (rev 02)
0000:00:01.0 PCI bridge: Intel Corp. 82830 830 Chipset AGP Bridge (rev 02)
0000:00:1d.0 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #1) (rev 01)
0000:00:1d.1 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #2) (rev 01)
0000:00:1d.2 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #3) (rev 01)
0000:00:1e.0 PCI bridge: Intel Corp. 82801BAM/CAM PCI Bridge (rev 41)
0000:00:1f.0 ISA bridge: Intel Corp. 82801CAM ISA Bridge (LPC) (rev 01)
0000:00:1f.1 IDE interface: Intel Corp. 82801CAM IDE U100 (rev 01)
0000:00:1f.3 SMBus: Intel Corp. 82801CA/CAM SMBus Controller (rev 01)
0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801CA/CAM AC'97 Audio 
Controller (rev 01)
0000:01:00.0 VGA compatible controller: S3 Inc. SuperSavage IX/C SDR (rev 05)
0000:02:00.0 CardBus bridge: Texas Instruments PCI1420
0000:02:00.1 CardBus bridge: Texas Instruments PCI1420
0000:02:02.0 Communication controller: Lucent Microelectronics WinModem 56k 
(rev 01)
0000:02:08.0 Ethernet controller: Intel Corp. 82801CAM (ICH3) PRO/100 VE (LOM) 
Ethernet Controller (rev 41)
0000:07:00.0 Ethernet controller: Xircom Cardbus Ethernet 10/100 (rev 03)

redbull:/usr/src/cm/xen # /sbin/lspci -tv

-[00]-+-00.0  Intel Corp. 82830 830 Chipset Host Bridge
      +-01.0-[01]----00.0  S3 Inc. SuperSavage IX/C SDR
      +-1d.0  Intel Corp. 82801CA/CAM USB (Hub #1)
      +-1d.1  Intel Corp. 82801CA/CAM USB (Hub #2)
      +-1d.2  Intel Corp. 82801CA/CAM USB (Hub #3)
      +-1e.0-[02-08]--+-[07]---00.0  Xircom Cardbus Ethernet 10/100
      |               \-[02]-+-00.0  Texas Instruments PCI1420
      |                      +-00.1  Texas Instruments PCI1420
      |                      +-02.0  Lucent Microelectronics WinModem 56k
      |                      \-08.0  Intel Corp. 82801CAM (ICH3) PRO/100 VE 
(LOM) Ethernet Controller
      +-1f.0  Intel Corp. 82801CAM ISA Bridge (LPC)
      +-1f.1  Intel Corp. 82801CAM IDE U100
      +-1f.3  Intel Corp. 82801CA/CAM SMBus Controller
      \-1f.5  Intel Corp. 82801CA/CAM AC'97 Audio Controller


... but when we repeat it under xenolinux, we don't see the "PCI" device "Xircom Cardbus Ethernet 10/100" anymore (although we do see the cardbus bridge)

redbull:/usr/src/cm/xen #  /sbin/lspci

0000:00:00.0 Host bridge: Intel Corp. 82830 830 Chipset Host Bridge (rev 02)
0000:00:1d.0 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #1) (rev 01)
0000:00:1d.1 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #2) (rev 01)
0000:00:1d.2 USB Controller: Intel Corp. 82801CA/CAM USB (Hub #3) (rev 01)
0000:00:1f.0 ISA bridge: Intel Corp. 82801CAM ISA Bridge (LPC) (rev 01)
0000:00:1f.1 IDE interface: Intel Corp. 82801CAM IDE U100 (rev 01)
0000:00:1f.3 SMBus: Intel Corp. 82801CA/CAM SMBus Controller (rev 01)
0000:00:1f.5 Multimedia audio controller: Intel Corp. 82801CA/CAM AC'97 Audio 
Controller (rev 01)
0000:01:00.0 VGA compatible controller: S3 Inc. SuperSavage IX/C SDR (rev 05)
0000:02:00.0 CardBus bridge: Texas Instruments PCI1420
0000:02:00.1 CardBus bridge: Texas Instruments PCI1420
0000:02:02.0 Communication controller: Lucent Microelectronics WinModem 56k 
(rev 01)
0000:02:08.0 Ethernet controller: Intel Corp. 82801CAM (ICH3) PRO/100 VE (LOM) 
Ethernet Controller (rev 41)

redbull:/usr/src/cm/xen #  /sbin/lspci -tv

-+-[02]-+-00.0  Texas Instruments PCI1420
 |      +-00.1  Texas Instruments PCI1420
 |      +-02.0  Lucent Microelectronics WinModem 56k
 |      \-08.0  Intel Corp. 82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller
 +-[01]---00.0  S3 Inc. SuperSavage IX/C SDR
 \-[00]-+-00.0  Intel Corp. 82830 830 Chipset Host Bridge
        +-1d.0  Intel Corp. 82801CA/CAM USB (Hub #1)
        +-1d.1  Intel Corp. 82801CA/CAM USB (Hub #2)
        +-1d.2  Intel Corp. 82801CA/CAM USB (Hub #3)
        +-1f.0  Intel Corp. 82801CAM ISA Bridge (LPC)
        +-1f.1  Intel Corp. 82801CAM IDE U100
        +-1f.3  Intel Corp. 82801CA/CAM SMBus Controller
        \-1f.5  Intel Corp. 82801CA/CAM AC'97 Audio Controller

poking a bit around we can see that the xircom pci device gets added by yenta_socket.c. In there yenta_allocate_res() tries to allocate resources for those devices behing the bridge. However, it appears that xen prevents xenolinux just from doing that, as shown below.

(XEN) 02:00:01 reg=0x14 len=0x01 val=0x00000210 0 Guest 0 attempting sub-dword 
read to BASE_ADDRESS 1
(XEN) PCI: Found IRQ 9 for device 02:00.1
(XEN) PCI: Sharing IRQ 9 with 00:1f.3
(XEN) PCI: Sharing IRQ 9 with 00:1f.5
(XEN) 02:00:01 reg=0x14 len=0x01 val=0x00000210 0 Guest 0 attempting sub-dword 
read to BASE_ADDRESS 1
(XEN) 02:00:01 reg=0x18 len=0x04 val=0xb00a0702 0 Guest attempting update to 
BASE_ADDRESS 2
(XEN) 02:00:01 reg=0x1c len=0x04 val=0x10c00000 0 Guest attempting update to 
BASE_ADDRESS 3
(XEN) 02:00:01 reg=0x20 len=0x04 val=0x10ffffff 0 Guest attempting update to 
BASE_ADDRESS 4
(XEN) 02:00:01 reg=0x24 len=0x04 val=0x11000000 0 Guest attempting update to 
BASE_ADDRESS 5
(XEN) 02:00:01 reg=0x30 len=0x04 val=0x000048ff 0 caution: guest tried to 
change rom address.
(XEN) b=7 d=0 f=0 target does not exist
(XEN) pci_cfgreg_read : 07:00:00 reg=0x0e len=0x01 val=0xffffffff ret=0xffffffed
(XEN) b=7 d=0 f=0 target does not exist
(XEN) pci_cfgreg_read : 07:00:00 reg=0x00 len=0x04 val=0xffffffff ret=0xffffffed

ideas?


-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now. http://productguide.itmanagersjournal.com/
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.